在 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
我正在尝试在 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