2016-09-16 2 views
-1
case when @mode='TwoDays' 
then CenterMeetingDay between datepart(dw,GETDATE()-1) and DATEPART(DW,GETDATE()+1) 
end CenterMeetingDay 
+0

당신은 현재 요일을 나타내는 정수를 반환하기를 원하므로 DATEPAR을 사용해야합니다. T (DW, GETDATE()). day-day와 day + 사이의 매일은 오늘 날이 될 것입니다 – Mat

+0

일부 샘플 데이터를 보여 주시고 예상 된 결과를 – TheGameiswar

답변

1

SQL 서버에서는 부울 비교를 when 절로 간단히 지정할 수 없습니다. 그래서

에서, when의 조건을 포함 및 반환 값에 대한 명시 :

where ((@mode = 'TwoDays') and CenterMeetingDay between datepart(dw, GETDATE() - 1) and DATEPART(DW, GETDATE() + 1)) or 
     ((@mode <> 'TwoDays' . . .) 

또는 :하십시오 where 절에서

(case when @mode = 'TwoDays' and 
      CenterMeetingDay between datepart(dw, GETDATE() - 1) and DATEPART(DW, GETDATE() + 1) 
     then 1 else 0 
end) as CenterMeetingDay 

, 당신은 할 수

where (case when @mode = 'TwoDays' and 
       CenterMeetingDay between datepart(dw, GETDATE() - 1) and DATEPART(DW, GETDATE() + 1) 
      then 1 else 0 
     end) = 1 
+0

에 입력하십시오 : Approximate가 null이 아닌 경우 및 ApprovedDate <> '1900-01-01 00:00 : 00.000 ' 케이스 때 @ 모드 ='TwoDays '다음 CenterMeetingDay 날짜 부분 사이 (DW, GETDATE() - 1) DATEPART (DW, GETDATE() + 1) 단 CenterMeetingDay - 그리고 DisbursementMode ='DM1 ' 및 HO_ValidationFlag = 1 및 DATEdiff (d, HO_ValidationDate, GETDATE())> 2 –

관련 문제