-1

表1:

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

表 2:

ID     Total

1        140

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

すべての行を累積的に追加し、table2 で一致しない合計を見つけ、update ステートメントを記述して更新 (追加) し、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;

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

4

2 に答える 2

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
于 2012-05-09T19:40:23.893 に答える
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
于 2012-05-09T19:37:14.030 に答える