-->

如果索引列是不同的总和从一列值?(Sum values from one column if Ind

2019-10-19 03:45发布

我如何从一个栏时,索引列是不同的值求和?

起初,我有这个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,但是数量可以是不同的记录相同

Answer 1:

你的意思是,你只需要总结的一个值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值:

select sum(case when count(*) over (partition by `index`) = 1
                then cast(Quantity as int)
           end) as QuantitySum
from Records;

这两种使用窗函数来限制正被处理的值。

此外,列名为quantity应该被存储为数字型,因此不需要转换采取的总和。



Answer 2:

你可以尝试这样的:

SELECT DISTINCT COL1
, SUM(COL2)
FROM MYTABLE
GROUP BY COL1


Answer 3:

您可以使用此,如果您有重复的ID和产品数量:

SELECT COALESCE(SUM(DISTINCT ISNULL(cast(Quantity as int),0)),0) AS QuantitySum 
FROM (SELECT Id, Min(Quantity) From Records group by Id)


文章来源: Sum values from one column if Index column is distinct?