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