在 SQL 中创建两个 table 的并集后,如何在 SSRS Tablix 中的一行中显示每个 table 的总和

After creating a union of two tables in SQL, how to show sum from each table in a single line within SSRS Tablix

我正在尝试在 SSRS 中创建一个 tablix,其中一行显示来自两个单独数据库 table 的 TypeOfWork 的工作量总和。

我创建了一个带有 Union 的数据集(sql 显示的是简化的,但这是基本的想法),它允许我在每个 table 中获得每种类型工作的总和——顺便说一句我是如何进行分组的。对于每种类型的工作,我可以轻松地从 SSRS Tablix 上各自行中的两个 table 中显示两个总和。如:

工作区 |工作类型 |新建Table总和

工作区 |工作类型 |旧Table总和

...并重复

但是如何在一行中显示总和,例如:

工作区 |工作类型 |新 Table 总和 |旧Table总和

这是基本的 SQL:

SELECT SourceTable, WorkArea, TypeOfWork, Sum(WorkAmount)  
FROM 

(
SELECT 'OldTable' AS SourceTable, o.*
FROM Old o

UNION ALL

SELECT 

'NewTable' AS SourceTable
, NEWID()
, '2A077AC6-8040-49CB-B1FD-CD96D0A30533' AS [OldGuid]
, n.*

FROM New n

) AS ReportTable

GROUP BY WorkArea, TypeOfWork, SourceTable

您可以在顶级查询中使用 CASE 语句:

SELECT WorkArea
    , TypeOfWork
    , OldTableSum = SUM(CASE WHEN ReportTable.SourceTable = 'OldTable' THEN WorkAmount ELSE 0 END)  
    , NewTableSum = SUM(CASE WHEN ReportTable.SourceTable = 'NewTable' THEN WorkAmount ELSE 0 END)  
FROM 

(
SELECT 'OldTable' AS SourceTable, o.*
FROM Old o

UNION ALL

SELECT 
    'NewTable' AS SourceTable
    , NEWID()
    , '2A077AC6-8040-49CB-B1FD-CD96D0A30533' AS [OldGuid]
    , n.*
FROM New n

) AS ReportTable

GROUP BY WorkArea, TypeOfWork