Sql server SQL Server 2008:计算新行中的总和(分组依据)
我有一张桌子,上面有:Sql server SQL Server 2008:计算新行中的总和(分组依据),sql-server,group-by,sum,Sql Server,Group By,Sum,我有一张桌子,上面有: 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) 我想得到分数的总和,按颜色分组。预期结果: color id scores red 1 100 red 2 100 re
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)
我想得到分数的总和,按颜色分组。预期结果:
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)
感谢在群组中使用
SELECT *
FROM (SELECT color,
ids,
Sum(scores)scores
FROM #tableA
GROUP BY color,
ids WITH rollup) a
WHERE color IS NOT NULL
OR ids IS NOT NULL
在分组方式中使用
SELECT *
FROM (SELECT color,
ids,
Sum(scores)scores
FROM #tableA
GROUP BY color,
ids WITH rollup) a
WHERE color IS NOT NULL
OR ids IS NOT NULL
您可以为此使用分组集
,尽管结果不会直接以您想要的格式显示:
SELECT color,
ids,
SUM(scores) Scores
FROM #TableA
GROUP BY GROUPING SETS((color,ids),(color))
结果是:
╔═══════╦══════╦════════╗
║ color ║ ids ║ Scores ║
╠═══════╬══════╬════════╣
║ blue ║ 1 ║ 20 ║
║ blue ║ 5 ║ 50 ║
║ blue ║ NULL ║ 70 ║
║ red ║ 1 ║ 100 ║
║ red ║ 2 ║ 100 ║
║ red ║ 3 ║ 50 ║
║ red ║ NULL ║ 250 ║
╚═══════╩══════╩════════╝
您可以为此使用分组集
,尽管结果不会直接以您想要的格式显示:
SELECT color,
ids,
SUM(scores) Scores
FROM #TableA
GROUP BY GROUPING SETS((color,ids),(color))
结果是:
╔═══════╦══════╦════════╗
║ color ║ ids ║ Scores ║
╠═══════╬══════╬════════╣
║ blue ║ 1 ║ 20 ║
║ blue ║ 5 ║ 50 ║
║ blue ║ NULL ║ 70 ║
║ red ║ 1 ║ 100 ║
║ red ║ 2 ║ 100 ║
║ red ║ 3 ║ 50 ║
║ red ║ NULL ║ 250 ║
╚═══════╩══════╩════════╝
通常,这将通过两个单独的语句完成—SQL用于构建结果集,而不是在包含总计的报表中显示结果集。这将是报告软件(如SSRS)的工作。好吧,基于两个好的答案,我想我应该得到纠正:\n通常这将通过两个单独的语句完成-SQL用于构建结果集,而不是在包含总数的报告中显示结果集。这将是报告软件的工作,比如SSRS,基于这两个好答案,我想我应该得到纠正:\有没有办法在SQL中用有意义的东西,如SubTotal
等来别名null
?有没有办法在SQL中用有意义的东西,如SubTotal
等来别名null
?