2017-03-10 6 views
1

세 개의 테이블이 있습니다. 그 중 하나는 회사 휴일에 대한 표시기가있는 마스터 달력입니다. 내 DateDiff 계산에서 Holiday를 제외하고 싶습니다. 아래는 ... 내가 가진 무엇Sql Server 2008에서 회사 휴일을 DateDiff에서 제외

경고 날짜 12/23/16 완전한 날짜 12/28/16 휴일 12/26/16이 DATEDIFF 계산

아니야 자,가요 계산 쇼에서 exlude 필요 기업 3 일 그것이 내가 사투를 벌인거야 어디 휴일이다 제거하려고 12/26/16 = 2 일

DATEDIFF(DD,A.ALERTS_CREATE_DT,S.CreatedDate) 
      -(DATEDIFF(WK,A.ALERTS_CREATE_DT,S.CreatedDate) * 2) --HOW MANY WEEKEND DAYS PASSED BY 
      -(CASE WHEN DATENAME(DW,A.ALERTS_CREATE_DT) = 'Sunday' THEN 1 ELSE 0 END) 
      -(CASE WHEN DATENAME(DW,S.CreatedDate) = 'Saturday' THEN 1 ELSE 0 END) 
      -(CASE WHEN CAL.GRH_HOLIDAY_IND = 'Y' THEN 1 ELSE 0 END) 
      -( SELECT COUNT(CAL.GRH_HOLIDAY_IND) 
       FROM A 
       FULL OUTER JOIN S ON A.ID= S.ID 
       INNER JOIN CAL ON A.ALERTCREATEDT_MMDDYYYY = CAL.CALENDAR_DATE 
       WHERE 1=1 
       AND Cal.GRH_HOLIDAY_IND = 'Y' 
       AND CAL.CALENDAR_DATE between CAST(A.CREATE_DT AS DATE) AND CAST(S.CreatedDate AS DATE)) AS BusinessDays 

제외한다, 아래를 참조하십시오.

-( SELECT COUNT(CAL.GRH_HOLIDAY_IND) 
       FROM A 
       FULL OUTER JOIN S ON A.ID= S.ID 
       INNER JOIN CAL ON A.ALERTCREATEDT_MMDDYYYY = CAL.CALENDAR_DATE 
       WHERE 1=1 
       AND Cal.GRH_HOLIDAY_IND = 'Y' 
       AND CAL.CALENDAR_DATE between CAST(A.CREATE_DT AS DATE) AND CAST(S.CreatedDate AS DATE 
+0

기타 정보가 필요합니까? – John

+0

휴일 제외 방법을 잘 모르겠습니다. – John

답변

0

2 개의 사례 문장 뒤에는 휴일 캘린더 테이블에서 일수를 뺀 다음 문장을 추가 할 수 있습니다.

- (select ISNULL(count(1),0) from Cal where Cal.Holiday between ALERTS_CREATE_DT AND CreatedDate) 
+0

휴일이있을 때 표시기가 y 인 전체 달력입니다. 이 쿼리에 몇 가지 표현해야합니다, 맞습니까? 둘째, 위의 쿼리에이를 추가하는 데 문제가 있습니다. 도울 수 있니? – John

+0

나는 나의 질문을 업데이트했다. 내가 고심하고있는 곳에서 마지막 질문을 본다. – John

+0

@ 존, 휴일 캘린더 테이블에는 휴일 날짜 만 있습니다. 아래 코드를 사용하면 회사 휴일을 뺄 수 있습니다. - (ALERTS_CREATE_DT와 CreatedDate 및 GRH_HOLIDAY_IND = 'Y'사이의 Cal.CALENDAR_DATE)에서 ISNULL (count (1), 0)을 선택하십시오. –