5 개의 열이있는 테이블이 있습니다. Emp
, Surname
, CSD
, Term Rsn
및 Date
입니다. 처음 4 개의 열은 동일하게 유지되지만 날짜가 바뀝니다. 30 가지 날짜가있는 Emp에 대해 30 개의 레코드가있을 수 있습니다. SQL Server가 여러 레코드의 마지막 날짜를 검색합니다.
이
작동하는 내 코드입니다하지만 난 그게 내가 날짜 필드 사용을 선택하면 마지막 날짜Create PROCEDURE testPro(
@reportStartDate date,
@reportEndDate date
)
AS
BEGIN
SELECT DISTINCT Emp, Surname, CSD, CASE WHEN CSD<= @reportStartDate
THEN
CASE WHEN [Term Rsn] != 0 THEN
CASE WHEN [Date] <= @reportEndDate THEN
(DATEDIFF(dd,@reportStartDate, [Date]) - (2*
DATEDIFF(wk,@reportStartDate,[Date])))+1 ELSE (DATEDIFF(dd,@reportStartDate, @reportEndDate) - (2*
DATEDIFF(wk,@reportStartDate,@reportEndDate)))+1 END ELSE (DATEDIFF(dd,@reportStartDate, @reportEndDate) - (2*
DATEDIFF(wk,@reportStartDate,@reportEndDate)))+1 END
ELSE
CASE WHEN [Term Rsn] != 0 THEN
CASE WHEN [Date] <= @reportEndDate THEN
(DATEDIFF(dd,CSD, [Date]) - (2*
DATEDIFF(wk,CSD,[Date])))+1 ELSE (DATEDIFF(dd,CSD, @reportEndDate) - (2*
DATEDIFF(wk,CSD,@reportEndDate)))+1 END ELSE (DATEDIFF(dd,CSD, @reportEndDate) - (2*
DATEDIFF(wk,CSD,@reportEndDate)))+1 END
END AS [Working Days]
FROM GyPremiumsTemp
WHERE CSD < @reportEndDate AND [Date] > @reportStartDate --AND [Date] = (select max([Date]) FROM GyPremiumsTemp)
ORDER BY Emp ASC
END
EXEC testPro '2012-01-01', '2012-12-31'
하위 쿼리에서 조건 (emp id)을 추가하고 시도하십시오. – Jesuraja
** 정상화 ** 데이터를 고려하셨습니까? – podiluska