无法让SQL正确执行以下操作。我有一个包含以下内容的表:
ID |Serial# |Part #|Cost|Qty|
1 |ABC |1 |100 | 1 |
2 |ABC |2 |100 | 2 |
3 |ABC |3 |100 | 1 |
4 |DEF |1 |100 | 1 |
5 |DEF |2 |100 | 1 |
我想添加第6列“总成本”,将“成本”乘以“数量”并对其求和,按序列号分组,然后将该值添加到每条记录中。这意味着,ID 1,2,3的“总成本”将为400,而ID 4,5则为200.
我想我需要做一个子查询来做总和,然后加入显示“Cost”和“Qty”的外部查询但是我一直收到错误因为我不能包含“Part#”子查询。
答案 0 :(得分:2)
这是一个应该适用于任何数据库的方法:
SELECT t1.*, t2.total_cost
FROM yourTable t1
INNER JOIN
(
SELECT Serial, SUM(Cost*Qty) AS total_cost
FROM yourTable
GROUP BY Serial
) t2
ON t1.Serial = t2.Serial;
如果您的数据库具有分析函数,那么我们可以避免使用子查询:
SELECT t.*,
SUM(Cost*Qty) OVER (PARTITION BY Serial) total_cost
FROM yourTable t;