我正在尝试将 MS Access 查询转换为 SQL Sever 存储过程,但在对两个不相关表中的字段求和和分组时遇到问题。可以在 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 查询时如何求和- HOW TO GROUP BY
[Current_Year]-1, tbl_CalendarYear.Current_Year
类似于 Access 查询
好心提醒。谢谢你。