3

表1

Item  ----  Qauntity  ---- Code
123 1 ---    10       ---  123
123 2 ---    20       ---  123
123 3 ---    30       ---  123
653 3 ---    60       ---  345
653 2 ---    30       ---  345
653 4 ---    20       ---  345
967 3 ---    10       ---  967
967 2 ---    20       ---  967
967 1 ---    30       ---  967

表 2:

Code --   Qauntity
123  --     40
345  --     30
444  --     10
234  --     20
653  --     60

コードが存在する場合は、テーブル 1 からグループごとのコードで sum(Quantity) を取得し、テーブル 2 で更新する必要があります。それ以外の場合は、新しい行を挿入します。残りの行は表 2 のままです。次のシナリオで oracle plsql クエリを作成するにはどうすればよいですか。

ありがとう

4

2 に答える 2

0

MERGEを使用すると、それを行うことができます

merge into table2 t2 using (select code, quantity from table1) t1 on (t2.code = t1.code)
when not matched then insert (code,quantity) values (t1.code,t1.qty)
when matched then update set quantity = quantity+t1.quantity;
于 2013-03-27T07:54:14.153 に答える
0

行を「アップサート」(更新または挿入) するために使用できます。マージ ソースは、Quantity の合計を計算mergeできるサブクエリにすることができます。group by Code

merge   into Table2 t2 
using   (
        select  Code
        ,       sum(Quantity) as SumQuantity
        from    Table1
        group by
                Code
        ) t1
on      (t1.Code = t2.Code)
when    not matched then 
        insert  (Code, Quantity) 
        values  (t1.Code, t1.SumQuantity)
when    matched then 
        update  set Quantity = t1.SumQuantity;

SQL Fiddle の例。

于 2013-03-27T07:58:40.110 に答える