Sql Server 2008 从 DateDiff 中排除公司假期
Sql Server 2008 Exclude Company Holiday from DateDiff
我有三个表,其中一个是包含公司假期指标的主日历。我想从 DateDiff 计算中排除 Holiday。以下是我的...
警报日期 12/23/16
完成日期 2016 年 12 月 28 日
公司假期 12/26/16 需要从 DateDIff 计算中排除
--我的计算显示 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
在 2 个案例语句之后,您可以添加以下语句以从假期日历中减去天数 table。
- (select ISNULL(count(1),0) from Cal where Cal.Holiday between ALERTS_CREATE_DT AND CreatedDate )
我有三个表,其中一个是包含公司假期指标的主日历。我想从 DateDiff 计算中排除 Holiday。以下是我的...
警报日期 12/23/16 完成日期 2016 年 12 月 28 日 公司假期 12/26/16 需要从 DateDIff 计算中排除
--我的计算显示 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
在 2 个案例语句之后,您可以添加以下语句以从假期日历中减去天数 table。
- (select ISNULL(count(1),0) from Cal where Cal.Holiday between ALERTS_CREATE_DT AND CreatedDate )