2012-05-09 26 views
-1

表1:累積条件クエリ

ID  Total1 Total2 Total3 
1   10  0   20 
1   40  0   50 
1   15  0   5 

表2:

ID  Total 

1  140 

どのように私は、累積的にすべての行を追加して、table2の中に一致する合計を見つけるのですか?

どのように私は累積的にすべての行を追加し、テーブル2に合致しない合計を見つけ、更新(追加)してtable2に書き込む更新ステートメントを書きますか?

select sum(t1.total1) + sum(t1.total2) +sum(t1.total3) as "Total" from 
table t1, table t2 where t1.ID=t2.ID and sum(t1.total1) + 
sum(t1.total2) +sum(t1.total3)=t2.total; 

正しく更新構文を取得できません。

+0

と:同じ合計を持っていない行を更新するには、このような相関サブクエリを使用することができますそこには「GROUP BY ID」がありますか? –

+0

この宿題はありますか? – Tejs

+0

あなたが提示したシナリオでクエリが何をすべきかを説明することができます(期待される出力は?) – GolfWolf

答えて

1

合計を見つけて一致させるための適切なクエリがあるようです。あなたが不足している

UPDATE table2 
SET total = (
    SELECT SUM(Total1 + Total2 + Total3) FROM table1 
    WHERE id = table2.id 
    GROUP BY id 
) 

または(少し複雑、しかしそう速く)参加

UPDATE t2 
SET t2.total = t1.total 
FROM table2 t2 
INNER JOIN (
    SELECT id, SUM(Total1 + Total2 + Total3) as total FROM table1 
    GROUP BY id 
) t1 ON t1.id = t2.id 
WHERE t2.total <> t1.total 
0
select T1.* from 
(
    select t1.ID, sum(t1.total1) + sum(t1.total2) + sum(t1.total3) as Total 
    from table t1 
    group by t1.ID 
) t1 
inner join table t2 on t1.ID = t2.ID and t1.Total = t2.total