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

在SQL中创建两个表的并集后,如何在SSRS Tablix中的单行中显示每个表的总和,sql,sql-server,reporting-services,dataset,ssrs-tablix,Sql,Sql Server,Reporting Services,Dataset,Ssrs Tablix,我试图在SSRS中创建一个tablix,其中一行显示来自两个独立数据库表的工作类型的工作量总和 我创建了一个带有联合的数据集(所示的sql是简化的,但这是基本思想),它允许我在每个表中获得每种工作类型的总和——通过我如何进行分组的方式。我可以很容易地从SSRS表格上的两个表格中显示每种工作类型的两个总和。例如: 工作区域|工作类型|新表总和 工作区|工作类型|旧表总和 …然后重复 但是如何在一行中显示总和,例如: 工作区|工作类型|新表和|旧表和 以下是基本SQL: SELECT SourceT

我试图在SSRS中创建一个tablix,其中一行显示来自两个独立数据库表的工作类型的工作量总和

我创建了一个带有联合的数据集(所示的sql是简化的,但这是基本思想),它允许我在每个表中获得每种工作类型的总和——通过我如何进行分组的方式。我可以很容易地从SSRS表格上的两个表格中显示每种工作类型的两个总和。例如:

工作区域|工作类型|新表总和

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

…然后重复

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

工作区|工作类型|新表和|旧表和

以下是基本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

您可以在top查询中使用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

狐狸。结果是相似的,但你的案例让我有了一个方便的方法来命名每个总数。我仍然在为每个表的总和获取单独的行。我尝试在Tablix行组中按工作类型分组,但它只显示旧表中的总和,而没有同时显示两个总和。我本以为按工作类型分组就可以了,但遗憾的是,我只接受了旧的表信息。糟糕的是,您需要按SourceTable删除组-我修复了上面的查询。当我在SQL Server Management Studio中尝试时,我收到此错误:“ReportTable.SourceTable”列在select列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。我从select子句中删除了SourceTable,它可能正在工作……我将测试更多信息。另外,您应该从select语句中删除该记录的SourceTable。