안녕하세요. 입국 일과 퇴근 일 사이에 매 3 일마다 업데이트해야하는 입국 일과 출발일이 포함 된 임시 직원 표가 있습니다. 여기 내 출력SQL은 매 3 일마다 업데이트됩니다.
내가 생각할 수있는 유일한 방법은 3의 배수와 DATEADD를 사용하는 것입니다 만, 도착과 출발 사이의 일 달 또는 몇 년이 될 수 있습니다, 그래서 세트 UPDATE 필요 며칠을 불문하고 3 일마다
UPDATE #Report SET "Service" = CASE
WHEN Date = DATEADD(DAY,3,CAST(FLOOR(CAST(Arr AS money)) AS Datetime)) THEN 'Full Service'
WHEN Date = DATEADD(DAY,6,CAST(FLOOR(CAST(Arr AS money)) AS Datetime)) THEN 'Full Service'
WHEN Date = DATEADD(DAY,9,CAST(FLOOR(CAST(Arr AS money)) AS Datetime)) THEN 'Full Service'
WHEN Date = DATEADD(DAY,12,CAST(FLOOR(CAST(Arr AS money)) AS Datetime)) THEN 'Full Service'
WHEN Date = DATEADD(DAY,15,CAST(FLOOR(CAST(Arr AS money)) AS Datetime)) THEN 'Full Service'
WHEN Date = DATEADD(DAY,18,CAST(FLOOR(CAST(Arr AS money)) AS Datetime)) THEN 'Full Service'
WHEN Date = DATEADD(DAY,21,CAST(FLOOR(CAST(Arr AS money)) AS Datetime)) THEN 'Full Service'
...
etc
ELSE 'Restricted Service' END
누구나 해결책을 생각해 낼 수 있습니까?
UPDATE #Report
SET Service = (CASE WHEN DATEDIFF(day, Arr, Date) % 3 = 0
THEN 'Full Service'
ELSE 'Restricted Service'
END);
내가 money
로의 전환이 쿼리의 버전에서 무엇을하고 있는지 추측 할 수 없습니다
감사합니다 원래 도착 날짜가 시간을 포함하지만 더 좋은 방법이 있으면 알려 주시기 바랍니다 (예 : 09:00:00) 내 "날짜"열은 자정으로 설정되어 있으므로 Arr을 돈으로 변환 한 다음 다시 00:00 : 00.000으로 반환하여 datetime으로 되돌려 놓았습니다. :) – Kate
감사하지만 내 것보다 훨씬 낫습니다! – Kate
@Kate. . . 'date'로 변환하면 시간 구성 요소를 제거 할 수 있습니다. –