我正在创建一个SSRS报告,需要在其中按组显示值的总和,并且需要为这些组创建主组。我想知道这是否可能。如果不是,是否可以仅添加另一行以对分组的查询求和?
我当前的代码如下:
SELECT ISNULL([MasterGroup],'Other') AS 'Receipts',
SUM([ReceiptAmount]) AS 'Sum'
FROM TableA
WHERE [MasterGroup] IN ('Other','A','B','C','D','E')
GROUP BY [MasterGroup]
不幸的是,仅显示A-E组,没有显示被其他替换的NULL。
我目前所看到的:
如果可能的话,这就是我想要输出的:
如果我无法在单个查询中执行此操作,则可能可以创建多行以达到最终目标,而我想输出的内容是:
答案 0 :(得分:2)
您可以使用grouping sets
:
SELECT COALESCE(CustomGroup, 'Total') as CustomerGroup,
Mastergroup AS Receipts, SUM(ReceiptAmount) AS 'Sum'
FROM TableA a CROSS APPLY
(VALUES (CASE WHEN MasterGroup in ('A', 'B') THEN 'Group 1'
WHEN MasterGroup in ('C', 'D') THEN 'Group 2'
WHEN MasterGroup in ('E') THEN 'Group 3'
END)
) v(custom_group)
WHERE [MasterGroup] IN ('Other','A', 'B', 'C', 'D', 'E')
GROUP BY GROUPING SETS ( (CustomGroup, Mastergroup), (CustomGroup) );
格式与您指定的格式略有不同,但应该足够相似。