Reputation: 97
I have a table with following:
CREATE TABLE #tableA (color varchar(10), ids int, scores int)
INSERT INTO #tableA
VALUES ('red', 1, 100),
('red',2,100),
('red',3,50),
('blue',1,20),
('blue',5,50)
I want to get the SUM of scores ,group by color. Expected result:
color id scores
red 1 100
red 2 100
red 3 50
SUM 250 (100+100+50)
blue 1 20
blue 5 50
SUM 70 (all blues)
Thanks
Upvotes: 0
Views: 226
Reputation: 70658
You can use GROUPING SETS
for this, although the results won't be directly in the format you want:
SELECT color,
ids,
SUM(scores) Scores
FROM #TableA
GROUP BY GROUPING SETS((color,ids),(color))
The results are:
╔═══════╦══════╦════════╗
║ color ║ ids ║ Scores ║
╠═══════╬══════╬════════╣
║ blue ║ 1 ║ 20 ║
║ blue ║ 5 ║ 50 ║
║ blue ║ NULL ║ 70 ║
║ red ║ 1 ║ 100 ║
║ red ║ 2 ║ 100 ║
║ red ║ 3 ║ 50 ║
║ red ║ NULL ║ 250 ║
╚═══════╩══════╩════════╝
Upvotes: 2