2014-12-18 2 views
0

아래 쿼리에서 특정 날짜를 제외하려면 어떻게해야합니까? 2014 년 25 월 25 일과 같은 날짜를 제외하고 싶습니다.쿼리에서 날짜 제외

SELECT *, 
    (DATEDIFF(dd, [1], next_service)) - (DATEDIFF(wk, [1], next_service) * 2) - (
     CASE 
      WHEN DATENAME(dw, [1]) = 'Sunday' 
       THEN 1 
      ELSE 0 
      END 
     ) - (
     CASE 
      WHEN DATENAME(dw, [1]) = 'Saturday' 
       THEN 1 
      ELSE 0 
      END 
     ) AS days_diff_1, 
    (DATEDIFF(dd, [2], next_service)) - (DATEDIFF(wk, [2], next_service) * 2) - (
     CASE 
      WHEN DATENAME(dw, [2]) = 'Sunday' 
       THEN 1 
      ELSE 0 
      END 
     ) - (
     CASE 
      WHEN DATENAME(dw, [2]) = 'Saturday' 
       THEN 1 
      ELSE 0 
      END 
     ) AS days_diff_2, 
    (DATEDIFF(dd, [3], next_service)) - (DATEDIFF(wk, [3], next_service) * 2) - (
     CASE 
      WHEN DATENAME(dw, [3]) = 'Sunday' 
       THEN 1 
      ELSE 0 
      END 
     ) - (
     CASE 
      WHEN DATENAME(dw, [3]) = 'Saturday' 
       THEN 1 
      ELSE 0 
      END 
     ) AS days_diff_3, 
    (DATEDIFF(dd, u_gas_injunction, next_service)) - (DATEDIFF(wk, u_gas_injunction, next_service) * 2) - (
     CASE 
      WHEN DATENAME(dw, u_gas_injunction) = 'Sunday' 
       THEN 1 
      ELSE 0 
      END 
     ) - (
     CASE 
      WHEN DATENAME(dw, u_gas_injunction) = 'Saturday' 
       THEN 1 
      ELSE 0 
      END 
     ) AS injunction_diff, 
    DATEADD(day, (- 25 % 5) + CASE ((@@DATEFIRST + DATEPART(weekday, next_service) + (25 % 5)) % 7) 
      WHEN 0 
       THEN 2 
      WHEN 1 
       THEN 1 
      ELSE 0 
      END, DATEADD(week, (- 25/5), next_service)) AS apt_target1, 
    DATEADD(day, (- 18 % 5) + CASE ((@@DATEFIRST + DATEPART(weekday, next_service) + (18 % 5)) % 7) 
      WHEN 0 
       THEN 2 
      WHEN 1 
       THEN 1 
      ELSE 0 
      END, DATEADD(week, (- 18/5), next_service)) AS apt_target2, 
    DATEADD(day, (- 8 % 5) + CASE ((@@DATEFIRST + DATEPART(weekday, next_service) + (8 % 5)) % 7) 
      WHEN 0 
       THEN 2 
      WHEN 1 
       THEN 1 
      ELSE 0 
      END, DATEADD(week, (- 8/5), next_service)) AS apt_target3, 
    DATEADD(day, (- 5 % 5) + CASE ((@@DATEFIRST + DATEPART(weekday, next_service) + (5 % 5)) % 7) 
      WHEN 0 
       THEN 2 
      WHEN 1 
       THEN 1 
      ELSE 0 
      END, DATEADD(week, (- 5/5), next_service)) AS injunction_targe 
FROM #rk_ap_pivot 
+0

먼저 ** [** 여기 **] (http://msdn.microsoft.com/en-us/library/ms188047.aspx)를보십시오 –

답변

1

FROM #rk_ap_pivot 다음에 WHERE datefield <> '2014-12-25'을 추가하십시오.

+0

나는 OP가 약간의 시간을 읽어야한다고 생각합니다. 'WHERE' 절은 황금 플래터에 대한 답을 받기보다는'SQL'에 대한 기본 지식이기 때문에. 질의의 복잡성을 살펴보면 나는 그저 "COPY-PASTE and ask *"유형이라고 생각할 수 있습니다. 우리는 새로운 StackOverflow 사용자에게이 커뮤니티에서 어떻게 행동하고 질문하는 방법을 가르쳐야합니다. 질문을하는 방법에 대한 지침을 제공하는 사람의 말을 듣고 [** 여기 **] (http://youtu.be/kzrz-hGr2bw?t=1m21s). –

+0

올바르게 설명했는지 확실하지 않습니다. DATEDIFF (dd, [1], next_service)) - (DATEDIFF (ww, [1], next_service) * 2) - (CASE WHEN DATENAME (dw, [1]) = '일요일 'THEN 1 ELSE 0 END) - (DATENAME (dw, [1]) ='토요일 'THEN 1 ELSE 0 END)을 days_diff_1로 변경하면 특정 날짜를 제외하고 싶습니다. – user3452212