Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server 2008:计算新行中的总和(分组依据)_Sql Server_Group By_Sum - Fatal编程技术网

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