2012-02-29 5 views
0

mysqlのSQL文をSQL Server 2008に変換中にエラーが発生しました。 制限とエイリアスが機能しないため、誰でも次のクエリで間違っていることを教えていただけます。mysqlのinsert文をSQLサーバのinsert文に変換しますか?

insert into account (product_cd, cust_id, open_date, 
    last_activity_date, status, open_branch_id, 
    open_emp_id, avail_balance, pending_balance) 
select a.prod_cd, c.cust_id, a.open_date, a.last_date, 'ACTIVE', 
    e.branch_id, e.emp_id, a.avail, a.pend 
from customer c cross join 
(select b.branch_id, e.emp_id 
    from branch b inner join employee e on e.assigned_branch_id = b.branch_id 
    where b.city = 'Woburn' limit 1) e 
    cross join 
(select 'CHK' prod_cd, '2000-01-15' open_date, '2005-01-04' last_date, 
    1057.75 avail, 1057.75 pend union all 
    select 'SAV' prod_cd, '2000-01-15' open_date, '2004-12-19' last_date, 
    500.00 avail, 500.00 pend union all 
    select 'CD' prod_cd, '2004-06-30' open_date, '2004-06-30' last_date, 
    3000.00 avail, 3000.00 pend) a 
where c.fed_id = '111-11-1111'; 

エラー

Msg 102, Level 15, State 1, Line 9 
Incorrect syntax near 'limit'. 
Msg 102, Level 15, State 1, Line 14 
Incorrect syntax near 'a'. 
Msg 102, Level 15, State 1, Line 24 
Incorrect syntax near 'limit'. 
Msg 102, Level 15, State 1, Line 29 
Incorrect syntax near 'a'. 
Msg 102, Level 15, State 1, Line 39 
Incorrect syntax near 'limit'. 
Msg 102, Level 15, State 1, Line 46 
Incorrect syntax near 'a'. 
Msg 102, Level 15, State 1, Line 56 
Incorrect syntax near 'limit'. 
Msg 102, Level 15, State 1, Line 59 
Incorrect syntax near 'a'. 
Msg 102, Level 15, State 1, Line 69 
Incorrect syntax near 'limit'. 
Msg 102, Level 15, State 1, Line 74 
Incorrect syntax near 'a'. 
Msg 102, Level 15, State 1, Line 84 
Incorrect syntax near 'limit'. 
Msg 102, Level 15, State 1, Line 87 
Incorrect syntax near 'a'. 
Msg 102, Level 15, State 1, Line 97 
Incorrect syntax near 'limit'. 
Msg 102, Level 15, State 1, Line 102 
Incorrect syntax near 'a'. 
Msg 102, Level 15, State 1, Line 112 
Incorrect syntax near 'limit'. 
Msg 102, Level 15, State 1, Line 119 
Incorrect syntax near 'a'. 

編集:

create table account 
(account_id integer not null identity, 
    product_cd varchar(10) not null, 
    cust_id integer not null, 
    open_date date not null, 
    close_date date, 
    last_activity_date date, 
    status char(5) not null check(status in ('ACTIVE','CLOSED','FROZEN')), 
    open_branch_id smallint , 
    open_emp_id smallint , 
    avail_balance decimal(10,2), 
    pending_balance decimal(10,2), 
    constraint fk_product_cd foreign key (product_cd) 
    references product (product_cd), 
    constraint fk_a_cust_id foreign key (cust_id) 
    references customer (cust_id), 
    constraint fk_a_branch_id foreign key (open_branch_id) 
    references branch (branch_id), 
    constraint fk_a_emp_id foreign key (open_emp_id) 
    references employee (emp_id), 
    constraint pk_account primary key (account_id) 
); 

答えて

3

変更:これにより

(select b.branch_id, e.emp_id 
    from branch b inner join employee e on e.assigned_branch_id = b.branch_id 
    where b.city = 'Woburn' limit 1) 

(select TOP 1 b.branch_id, e.emp_id 
    from branch b inner join employee e on e.assigned_branch_id = b.branch_id 
    where b.city = 'Woburn') 

ORDER BY句がありませんが、あなたはまた2つを実行しますCROSS JOIN、これがあなたの予想される出力を返すことは確かですか?

+0

メッセージ8152、レベル16、状態14、行1が表示されません。 文字列またはバイナリのデータが切り捨てられます。 ステートメントが終了しました。 'エラーです。 –

+0

@ViswanathanIyer - これは完全に異なる問題です。現在はクエリを実行していますが、ターゲットテーブルとクエリの列とで異なるデータ型があるため、データの挿入に失敗します。 – Lamak

+0

質問を作成して 'table'文を更新しました。 –