Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.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 分组集,上卷但有多列_Sql_Sql Server_Tsql_Rollup - Fatal编程技术网

Sql 分组集,上卷但有多列

Sql 分组集,上卷但有多列,sql,sql-server,tsql,rollup,Sql,Sql Server,Tsql,Rollup,我有一个生成以下结果的查询。我遇到的问题是如何在底部创建3行,显示>=14天的总计,以及1-13天之后的总计 select [Period], [Person], count(*) as NumberOfRecords, sum([Amount]) as [Amount] 如果我做了以下操作并排除此人,我会得到一个总数,但我需要此人也显示: GROUP BY GROUPING SETS(([[Period]),()); 这怎么可能呢 您可以使用汇总进行小计 SELECT CASE

我有一个生成以下结果的查询。我遇到的问题是如何在底部创建3行,显示>=14天的总计,以及1-13天之后的总计

select
[Period],
[Person],
count(*) as NumberOfRecords,
sum([Amount]) as [Amount]
如果我做了以下操作并排除此人,我会得到一个总数,但我需要此人也显示:

GROUP BY GROUPING SETS(([[Period]),());
这怎么可能呢


您可以使用
汇总
进行小计

SELECT
    CASE WHEN GROUPING(Period) = 1 THEN 'Total' ELSE Period END Period, 
    Person, SUM(NumberOfRecords) NumberOfRecords, 
    SUM(Amount) Amount 
from #temp
GROUP BY ROLLUP ((Period),(Period, Person))
ORDER BY GROUPING(Period), GROUPING(Person)
结果:

Period               Person               NumberOfRecords Amount
-------------------- -------------------- --------------- ---------------------
>= 14 days                                3               100.00
>= 14 days           Barry Knight         46              1000.00
>= 14 days           Jane Doe             52              750.00
>= 14 days           Joe Bloggs           50              400.00
>= 14 days           John Smith           32              200.00
1-13 days            Bob the Builder      331             7500.00
1-13 days            NULL                 331             7500.00
>= 14 days           NULL                 183             2450.00
Total                NULL                 514             9950.00

虽然您可以使用
汇总
,但我是
分组集的粉丝

GROUP BY GROUPING SETS( (Period, Person), (Period), () );
GROUP BY GROUPING SETS( (Period, Person), (Period), () );