如何在查询中对重复的行值进行求和

问题描述 投票:0回答:1

这是我的sql数据。

ProductID   id     SQFeet Stock
---------------
3           1      2400   10
17          2      1500   20
6           3      1000   15 
17          4      3000   5
6           4      2000   34

但代码和名称有重复的值 我想把每个重复的字段加起来。就像这样

ProductID id       SQFeet Stock
---------------
3         id       2400   10
17        id       4500   25
6         id       3000   49

我试过了

select ProductID, id, SUM(SQFeet) as SQ, SUM(Stock) as Stock from tbl_FactoryStock 
GROUP BY ProductID, id

但对于多个分组的列来说是行不通的 如果我只用一个分组的列就可以了 就像这样。

//This works fine
select ProductID, SUM(SQFeet) as SQ, SUM(Stock) as Stock from tbl_FactoryStock 
GROUP BY ProductID

但是当我用它来进行多列分组的时候,它就不工作了。

如何实现多列多组的目标?

c# sql sql-server sum distinct
1个回答
0
投票
DECLARE @T TABLE(
CODE INT ,
NAME VARCHAR(MAX),
TOTAL INT)

INSERT INTO @T VALUES(3,'SPRITE',2400)
INSERT INTO @T VALUES(17,'COKE',1500)
INSERT INTO @T VALUES(6 ,'DEW ',1000)
INSERT INTO @T VALUES(17,'COKE',3000)
INSERT INTO @T VALUES(6 ,'DEW ',2000)

SELECT CODE,NAME,SUM(TOTAL) AS TOTAL 
FROM @T
GROUP BY CODE,NAME

这个查询对你的案例来说是很好的。 enter image description here


0
投票

你可以试试这个

Select code, name, sum(total) as total
from yourtable
group by code, name

生活 抚琴 演示。

如果你想检查有重复值的记录id,那么你可以使用下面的窗口函数查询。

Select id,
 code,
 name,
 Count(*) OVER(PARTITION BY code, name) AS TotCount,
 SUM(total) OVER(PARTITION BY code, name) AS Total
from yourtable

enter image description here

这里是 抚琴 演示。

© www.soinside.com 2019 - 2024. All rights reserved.