Sql 分组集,上卷但有多列
我有一个生成以下结果的查询。我遇到的问题是如何在底部创建3行,显示>=14天的总计,以及1-13天之后的总计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
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), () );