需要在表中执行加法
表A
SELECT Unit, group, City, startdate, sum(Amt)
FROM gmr.BFR_CAL
Group By unit, group, city, startdate
sample data:-
tyre mrf hyder 12-04-23 49
Table - B
SELECT Unit, group, City, startdate, sum(Amt)
FROM gmr.DRAFT
WHERE ty = 6
Group By unit, group, city, startdate
sample data:-
tyre mrf hyder 12-04-23 5
Table - C
SELECT Unit, group, City, startdate, sum(Amt)
FROM gmr.DRAFT
WHERE ty <> 6
Group By unit, group, city, startdate;
sample data:-
tyre mrf hyder 12-04-23 18
需要查询
B+C!= A那么
更新类型为6的B(表)的AMT(列)
更新方程为
AMT= A-"B+C"
AMT=49-(18+5)
AMT=49-23
AMT= 26
因此,更新应该发生在表B中的col(Amt)中,其中先前的amt为5,但现在对于表B,而不是amt=5,现在应该是amt=26。
Finally Table B should look like :-
tyre mrf hyder 12-04-23 26
2条答案
按热度按时间im9ewurl1#
使用
MERGE
语句。你只是模糊地描述了你的表,以及你想要如何连接表和关联更新,但你似乎想要这样的东西:其中,对于样本数据:
在
MERGE
之后,然后:输出:
| 单位|集团名称|城市|开始日期|TY| AMT|
| - -----|- -----|- -----|- -----|- -----|- -----|
| 单位1| GRP1|城市1| 1970 - 01 - 01 00:00:00| 1|四百|
| 单位1| GRP1|城市1| 1970 - 01 - 01 00:00:00| 2|四百|
| 单位1| GRP1|城市1| 1970 - 01 - 01 00:00:00| 3|四百|
| 单位1| GRP1|城市1| 1970 - 01 - 01 00:00:00|六|四百|
并且这些值都已更新为新的总金额。
fiddle
xjreopfe2#
使用缓冲表、临时表进行计算,然后可以添加行或更新。然后可以截断和删除缓冲区、临时表。