下面我有一个名为存款的表,
| 部门标识|存款_金额|组件标识|
| - -|- -|- -|
| 一个|100个|一个|
| 2个|100个|一个|
| 三个|100个|一个|
运行下面的查询时,得到的下一个更新表不是所需的表:
query = em.createNativeQuery("UPDATE deposit SET deposit_amount = (SELECT SUM(deposit_amount) - 50) WHERE comp_id = :comp_id");
query.setParameter("comp_id", comp_id);
上述查询后更新的表
| 部门标识|存款_金额|组件标识|
| - -|- -|- -|
| 一个|五十个|一个|
| 2个|五十个|一个|
| 三个|五十个|一个|
但我想当我减去50或任何数额,它应该得到列的总和,并从总和减去金额,而不是从每列.
| 部门标识|存款_金额|组件标识|
| - -|- -|- -|
| 一个|八十三点三|一个|
| 2个|八十三点三|一个|
| 三个|八十三点三|一个|
因为总和是300,而300-50 = 250
请问我该怎么做?
2条答案
按热度按时间zf9nrax11#
通过使用公用表表达式,可以使用以下查询。获取每个comp_id的存款总额。然后将此新表(称为total)联接到comp_id的存款。从总和中减去50。
样品:
| 部门标识|存款_金额|组件标识|
| - -|- -|- -|
| 一个|二百五十|一个|
| 2个|二百五十|一个|
| 三个|二百五十|一个|
vybvopom2#
您应该在单独的查询中计算存款金额,然后根据匹配的“comp_id”值重新连接两个表
在您的最终查询中,它应该如下所示:
检查演示here。