2017-03-29 59 views
0

我正在嘗試開發SSRS報告。我已從交易表中獲取銷售價值,並按年份,月份和子類別對其進行分組。我已經創建了這個視圖。下面是視圖代碼:SELECT year year data based on year column

SELECT b.FiscalYear AS Year, 
     b.FiscalMonth AS Month, 
     a.SubCategoryKey, 
     MAX(a.SubCategoryDesc) AS SubCategoryDesc, 
     SUM(CAST(a.Cost + a.FreightCost AS decimal(18, 2))) AS TotalCost, 
     SUM(CAST(a.SalesAmount AS decimal(18, 2))) AS TotalSales,  
SUM(CAST(a.Weight AS decimal(18, 2))) AS Pounds, SUM(CAST(a.SalesAmount -(a.Cost + a.FreightCost) AS decimal(18, 2))) AS Margin 
FROM dbo.GrossMargin_CorrectedCosts AS a 
LEFT OUTER JOIN dbo.M_DateDim AS b ON a.InvoiceDate = b.Date 
GROUP BY b.FiscalYear, b.FiscalMonth, a.SubCategoryKey 

我然後用看起來像這樣一個乾淨的看法左:

SELECT [Year] 
    ,[Month] 
    ,[SubCategoryKey] 
    ,[SubCategoryDesc] 
    ,[TotalCost] 
    ,[TotalSales] 
    ,[Pounds] 
    ,[Margin] 
    FROM [FinancialData].[dbo].[SubCategorySalesbyMonth_V]\ 

現在我想產生額外列添加到該查詢。我將把它作爲SSRS報告運行並傳遞年份和月份參數。我想要做的是當選擇2017年作爲傳遞年份參數時,然後我想顯示TotalSales,TotalCost和Pounds的前一年值。

儘管查詢會是這個樣子:

SELECT [Year] 
    ,[Month] 
    ,[SubCategoryKey] 
    ,[SubCategoryDesc] 
    ,[TotalCost] 
    ,[TotalSales] 
    ,[Pounds] 
    ,[Margin] 
    ,PreviousYearTotalSales 
    ,PreviousYearTotalCost 
    ,PreviousYearPounds 
    FROM [FinancialData].[dbo].[SubCategorySalesbyMonth_V] 

本質上講,當一個年份和月份被傳遞到報表,我想表現出往年totalsales,TOTALCOST和英鎊,鑑於期減去一年。我有這麼一段時間。

我覺得我已經嘗試了一切,但顯然不是。請幫忙。

回答

1

現在可以工作的東西,你有一個工作視圖是以下查詢。

SELECT CY.[Year] 
,CY.[Month] 
,CY.[SubCategoryKey] 
,CY.[SubCategoryDesc] 
,CY.[TotalCost] 
,CY.[TotalSales] 
,CY.[Pounds] 
,CY.[Margin] 
,PY.[TotalSales] AS PreviousYearTotalSales 
,PY.[TotalCost] AS PreviousYearTotalCost 
,PY.[Pounds] AS PreviousYearPounds 
FROM [FinancialData].[dbo].[SubCategorySalesbyMonth_V] CY LEFT JOIN [FinancialData].[dbo].[SubCategorySalesbyMonth_V] PY 
ON CY.[Year] - 1 = PY.[Year] 
AND CY.[Month] = PY.[Month] 
AND CY.[SubCategoryKey] = PY.[SubCategoryKey] 
AND CY.[Month] = PY.[Month] 

這只是一個簡單的自我左加入到了同樣的觀點,而是從當年年度(CY)將加盟回到前一年(PY),一年 - 1.這是一個LEFT JOIN,所以如果沒有以前的年/月數據可用,則前一年的數值將爲空。

希望這會有所幫助。

+0

非常感謝你@R。理查茲。這是一個非常簡單和有價值的提示。它適用於這種情況。非常感謝你。 –