sql - 根据条件和相同的主键将一个表中的金额带入另一个表
问题描述
我有一个更新语句,我想将一个表中的值带入另一个具有相同 PK 的表中。基本上我想AWARD
从表中引入值AWARD
并将其填充到TEST
表中的AWARD
列中TYPE = 'CON'
。需要对 Date 列执行相同的操作。
该Award
表可以有多行,因此必须将奖励相加。我正在使用 Oracle SQL Developer。任何帮助深表感谢!
UPDATE TEST A
SET A.AWARD = (SELECT SUM(B.AWARD)
FROM AWARD B
WHERE B.ID = A.ID GROUP BY B.ID)
WHERE TRIM(A.TYPE) = 'CON';
当前TEST
表格数据:
ID TYPE AMOUNT AWARD DATE
---------------------------------------------------------
7186 INSPECT $942,164.81
7186 CMP $1,392,528.28
7186 CON $92,464,162.51
Award
桌子
ID AWARD DATE
-----------------------------------
7186 $83,157,895.00 6/25/2007
预期结果:
ID TYPE AMOUNT AWARD DATE
--------------------------------------------------------------------
7186 INSPECT $942,164.81
7186 CMP $1,392,528.28
7186 CON $92,464,162.51 $83,157,895.00 6/25/2007
解决方案
您可以将两列设置为:
UPDATE TEST T
SET (T.AWARD, T.DATE) = (SELECT SUM(A.AWARD), MAX(A.DATE)
FROM AWARD A
WHERE A.ID = T.ID
)
WHERE TRIM(T.TYPE) = 'CON';
请注意GROUP BY
,子查询中的 不是必需的。
注意我还更改了表别名,因此它们是表名的缩写,而不是无意义的单个字符。
推荐阅读
- node.js - 将 PM2 与 docker 一起使用
- javascript - JQuery 可拖动内容 - 显示选中
- java - PowerMock expectNew 不会返回模拟实例
- python - Python 模块应该如何使用代码生成?
- javascript - 如何使用JavaScript单击删除和添加css动画属性
- python-3.x - 如何在文件中找到前五个结果的总和
- php - 使用 TCPDF 将多个具有透明度的图像分层
- python - 从子包运行 Python 测试
- liferay-7 - Liferay 7.2 Finder 不满意的参考资料
- php - 在 phpunit 测试中呈现树枝模板的问题