当索引列不同时,如何对一列中的值求和?
最初,我有这样的 SQL 查询:
SELECT COALESCE(SUM(ISNULL(cast(Quantity as int),0)),0) AS QuantitySum FROM Records
也尝试这样做,但是当某些数量值碰巧相同时,这是不正确的:
SELECT COALESCE(SUM(DISTINCT ISNULL(cast(Quantity as int),0)),0) AS QuantitySum FROM Records
如何修复此查询以仅对按索引值区分的记录数量求和?
表格示例:
Index Quantity
AN121 40
AN121 40
BN222 120
BN111 20
BN2333 40
所以..我想返回220
我有重复的 ID,但不同记录的数量可能相同
你的意思是你只想对一个值求和quantity
对于索引列的每个单独值?
select sum(case when row_number() over (partition by `index` order by newid()) = 1
then cast(Quantity as int)
end) as QuantitySum
from Records;
或者,您的意思是您只想对以下值求和quantity
当恰好有一行具有给定值时index
value:
select sum(case when count(*) over (partition by `index`) = 1
then cast(Quantity as int)
end) as QuantitySum
from Records;
这两者都使用窗口函数来限制正在处理的值。
另外,还有一个名为quantity
应存储为数字类型,因此不需要转换即可求和。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)