在使用SQL分组后添加其他总行

时间:2019-01-15 18:35:11

标签: sql tsql reporting-services

我正在创建一个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。

我目前所看到的:

current query result

如果可能的话,这就是我想要输出的:

what I would like to see

如果我无法在单个查询中执行此操作,则可能可以创建多行以达到最终目标,而我想输出的内容是:

If this is not possible, this is what I would like to output

1 个答案:

答案 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) );

格式与您指定的格式略有不同,但应该足够相似。