2017-09-29 45 views
1

我試圖在SSRS中創建一個Tablix,其中單行顯示TypeOfWork的工作量的總和,來自兩個獨立的數據庫表。在SQL中創建了兩個表的聯合之後,如何在SSRS中的單個行中顯示每個表的總和Tablix

我使用Union創建了一個數據集(sql顯示簡化了,但它是基本思想),它允許我在每個表格中獲得每種類型的工作的總和 - 通過我如何進行分組。我可以很容易地從SSRS Tablix上的兩行表格中爲他們自己的行顯示兩種款項,每種類型的工作。如:

工作區域|工作類型|新表總和

工作區域|工作類型|舊錶總和

...和重複

但如何顯示一行的款項,因爲這樣的:

工作區|工作類型|新表總和|舊錶總和

這裏是基本的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 

回答

1

您可以在上面查詢中使用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 
+0

福克斯。結果是相似的,但你的CASE允許我有一個方便的方法來命名每個總數。我仍然得到每個表的總和單獨的行。我嘗試在Tablix行組中對TypeOfWork進行分組,但是它只顯示舊錶的總和,並沒有顯示兩個總和。我會認爲在工作類型上的分組會做到這一點,但可悲的是我只是拿着舊桌子的信息。 –

+0

我的不好,你需要刪除GROUP BY SourceTable - 我修正了上面的查詢。 –

+0

當我在SQL Server Management Studio中嘗試時,出現此錯誤:列'ReportTable.SourceTable'在選擇列表中無效,因爲它不包含在聚合函數或GROUP BY子句中。 –

相關問題