2017-03-29 13 views
0

私はSSRSレポートを作成しようとしています。トランザクションテーブルから売上値を取り上げ、年、月、およびサブカテゴリでグループ化しました。私はこれを視点として作成しました。SELECT昨年の年データを基にしたデータ

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 

私は、このようになりますきれいな眺めが残っています:私は今、このクエリへのadditonal列を追加したいと思います

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

ここでビューのコードです。私はこれをSSRSレポートとして実行し、年と月の両方のパラメータを渡します。私がしたいのは、渡されたYearパラメータとして2017が選択されたとき、TotalSales、TotalCost、およびPoundsの前年の値を表示したい場合です。

クエリは次のようになりに対し:年と月がレポートに渡されたとき

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

基本的に、私は前の年のtotalsalesを表示したいのですが、その一定期間にtotalCostとポンドマイナス1年。私はこれをやっている時を過ごしている。

私は明らかにすべてを試みたような気がします。助けてください。

答えて

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あり、前年/月のデータがない場合、前年の値はnullになります。

これが役に立ちます。

+0

ありがとうございます@R。リチャーズ。それは非常に単純で貴重なヒントでした。このシナリオには最適です。もう一度非常にありがとう。 –

関連する問題