MS Access 쿼리를 SQL Sever 저장 프로 시저로 변환하려고하지만 관련없는 두 테이블의 필드를 요약하고 그룹화하는 데 문제가 있습니다. 그것은 MS 액세스에서 할 수 있지만 SQL Server 저장 프로 시저에서 복제 할 수 없습니다. 다음은 위의 SQL Server 저장 프로 시저 변환의Access 쿼리를 SQL Server 저장 프로 시저로 변환
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;
을 -
는 여기에 변환 할 MS Access 쿼리입니다.
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 내 질문에 쿼리를 액세스 할 ONLY IF [A.Actuals_Year]=[Current_Year]
유사한 SUM을 수행하는 방법에
- 을 변환 -의
- 방법과 유사
[Current_Year]-1, tbl_CalendarYear.Current_Year
BY GROUP 쿼리를
친절에 액세스 할 TO 권하다. 고맙습니다.
왜 'Year'를'FLOAT'로 저장하고 있습니까? 샘플 데이터와 원하는 결과를 보여 주시겠습니까? 'GROUP BY SomeYear-1'의 의미를 잘 모르겠다 ... –
'[Current_Year]'로 그룹화 할 때 왜 [Current_Year] -1로 그룹화해야합니까? –