MS Access クエリを SQL Server ストアド プロシージャに変換しようとしていますが、関連のない 2 つのテーブルのフィールドの合計とグループ化に問題があります。MS Access では可能ですが、SQL Server ストアド プロシージャでは複製できません。
変換したいMS Accessクエリは次のとおりです-
MS アクセス クエリ
SELECT Tbl_Actuals.PS
, [tbl_CalendarYear.Current_Year]-1 AS [Previous Year]
, tbl_CalendarYear.Current_Year
, Tbl_Actuals.Source
, Tbl_Actuals.Program_Code
, IIf([Source]="Leasehold",Sum(IIf([Actuals_Year]<>[Current_Year], ([Amount]),Null)),Null) AS PrevYearAmount
FROM Tbl_Actuals, tbl_CalendarYear
GROUP BY Tbl_Actuals.PS
, [tbl_CalendarYear.Current_Year]-1
, tbl_CalendarYear.Current_Year
, Tbl_Actuals.Source
, Tbl_Actuals.Program_Code
ORDER BY Tbl_Actuals.Program_Code;
上記の SQL Server ストアド プロシージャ変換は次のとおりです。
declare @CurrentYear float
declare @PrevYear float
SET @CurrentYear=(SELECT [Current_Year] FROM tbl_CalendarYear)
SET @PrevYear= (SELECT [Current_Year] -1 FROM tbl_CalendarYear)
SELECT PS
, @CurrentYear as CurrentYear
, @PrevYear as PreviousYear
, A.Source
, A.Program_Code
, CASE WHEN (A.Source='Leasehold') THEN SUM(A.Amount) -- HOW TO DO SUM ONLY IF [A.Actuals_Year]=[Current_Year] similar to Access Query END AS PrevYearAmount
FROM Tbl_Actuals A
GROUP BY PS
, Source
, Program_Code -- HOW TO GROUP BY [Current_Year]-1, tbl_CalendarYear.Current_Year similar to Access Query
ORDER BY Program_Code;
これがSQL変換に関する私の質問です-
[A.Actuals_Year]=[Current_Year]
Accessクエリに似たIFのみを合計する方法[Current_Year]-1, tbl_CalendarYear.Current_Year
アクセスクエリに似たHOW TO GROUP BY
親切なアドバイス。ありがとうございました。