2016-09-14 92 views
0

我很努力地理解一種方法來獲取SSRS中正確的Tablix中的以下內容。SSRS tablix顯示銷售對比預算

我想用以下tablix報告。

  NOV 2016   DEC 2016 
      Sales Target  Sales Target 
CustomerA 100 200  400 300 

我的數據集都在SQL Server 2008 R2

DataSet1的得到銷售數字。

Customer InvoiceDate Salesvalue 
CustomerA 05/11/2016 50 
CustomerA 04/11/2016 50 
etc 

dataset2具有目標。

Customer date  Target 
    CustomerA 11/2016 200 
    CustomerA 12/2016 300 

我只是不能設法將這兩個表「合併」在一起,並讓我的目標在每個月的銷售額旁邊。

我設法讓它在powerBI中完成,因爲您可以根據額外的DimTimTable在表格之間很好地添加關係 ,其中我將日期與發票日期鏈接並添加僅基於月份的過濾器。

我只是想知道我的數據集應該如何獲得銷售(這是基於發票)旁邊的預算鏈接到該月。

所以我很努力去理解如何建模,如果SSRS和SQLserver是正確的呢?我應該爲此創建一個「立方體」嗎?

回答

0

您可以在SQL中執行此操作。

第一筆銷售:客戶和月,注意我用的DATEDIFF/DATEADD,找到了本月

SELECT Customer, DATEADD(month, DATEDIFF(month, 0, InvoiceDate, 0) as StartMonth, Sum(Salesvalue) as Sales 
FROM dataset1 
GROUP BY Customer, DATEADD(month, DATEDIFF(month, 0, InvoiceDate, 0) 

的第一天將您的預測表日期字段,以便它是一貫的,也有本月

SELECT Customer, CONVERT(date, '01/' + date , 103) as StartMonth, Target 
FROM dataset2 

您還可以參加在日曆文件,如果你不想在你的數據缺口,並加入與您的客戶列表的第一天,這樣你會得到所有可能的值你的支點。但爲了簡單起見,我只是在兩者之間進行外部連接,因爲您可能會爲您的範圍中的每個所需月份提供銷售或目標。

SELECT ISNULL(Sales.Customer, Targets.Customer) as Customer, 
ISNULL(Sales.StartMonth, Targets.StartMonth) as StartMonth, 
Sales, 
Target 
FROM (SELECT Customer, DATEADD(month, DATEDIFF(month, 0, InvoiceDate, 0) as  StartMonth, Sum(Salesvalue) Sales 
FROM dataset1 
GROUP BY Customer, DATEADD(month, DATEDIFF(month, 0, InvoiceDate, 0)) as ConvertedSales 
OUTER JOIN 
(SELECT Customer, CONVERT(date, '01/' + date , 103) as StartMonth, Target 
    FROM dataset2) Targets 
ON Sales.Customer = Targets.Customer AND Sales.StartMonth = Target.SalesMonth 

現在你可以使用這個數據集

+0

公園創建支點,我想你是與創建表矩陣,並在報告中的日期格式確定。如果沒有,我會將這些添加到回答 – Mike

+0

Koen,我的回答對你有幫助嗎? – Mike