【问题标题】:EMBEDDED DATEDIFF EXCLUD WEEKENDS + CASE STATEMENT嵌入式 DATEDIFF 不包括周末 + 案例声明
【发布时间】:2017-07-30 19:47:47
【问题描述】:

我有以下使用 case 语句的查询。我想约会两个日期,但不包括周末。 我有以下内容,但现在我想排除周六和周日... AND DATEDIFF(DD,A.ALERTS_CREATE_DT,S.CreatedDate)

CASE WHEN 
S.Name IN ('Assessment','Survey') 
  AND A.ALERT_DESC = 'ER'       
  AND CAST(A.ALERTS_CREATE_DT AS DATE) <= CAST(S.CreatedDate AS DATE) 
AND DATEDIFF(DD,A.ALERTS_CREATE_DT,S.CreatedDate) <= 2 /*EXCLUDE Sat and Sunday from the calculation*/   

完整查询

SELECT 

  CASE WHEN 
    S.Name IN ('Assessment','Survey') 
      AND A.ALERT_DESC = 'ER'       
      AND CAST(A.ALERTS_CREATE_DT AS DATE) <= CAST(S.CreatedDate AS DATE)
      AND  
      ( DATEDIFF(DD,A.ALERTS_CREATE_DT,S.CreatedDate) <= 2 /*Business Days*/   
      --DATEDIFF(DD,A.ALERTS_CREATE_DT,S.CreatedDate) + 1
      ---(DATEDIFF(WK,A.ALERTS_CREATE_DT,S.CreatedDate) * 2) 
      ---(CASE WHEN DATENAME(DW,A.ALERTS_CREATE_DT) = 'SUNDAY' THEN 1 ELSE 0 END)
      ---(CASE WHEN DATENAME(DW,S.CreatedDate) = 'SATURADAY' THEN 1 ELSE 0 END)
               )

   THEN 'Y'
    WHEN A.ALERT_DESC = 'model' OR S.CreatedDate IS NULL OR S.Name = 'ER'
    THEN ''
     ELSE 'N'
      END 'Count towards Alerts'

FROM A
FULL  S ON A.id= S.id

WHERE 1=1

【问题讨论】:

  • 是否需要其他信息?

标签: sql-server-2008 datediff case-statement


【解决方案1】:

排除周六和周日,这应该会为您提供所需的结果。

SELECT A.ALERT_DESC,A.ALERTS_CREATE_DT,S.Name,S.CreatedDate,
  CASE WHEN 
      S.Name IN ('Assessment','Survey')  AND A.ALERT_DESC = 'ER'       
      AND CAST(A.ALERTS_CREATE_DT AS DATE) <= CAST(S.CreatedDate AS DATE)
      AND  
        (( DATEDIFF(DD,A.ALERTS_CREATE_DT,S.CreatedDate)+1 
        - (datediff(wk,A.ALERTS_CREATE_DT,S.CreatedDate)*2) 
        - case when datepart(dw,A.ALERTS_CREATE_DT)=1 then 1 else 0 end 
        - case when datepart(dw,S.CreatedDate)=7 then 1 else 0 end
         )) <=2  THEN 'Y'
       WHEN A.ALERT_DESC = 'model' OR S.CreatedDate IS NULL OR S.Name = 'ER' THEN ''
       ELSE 'N' END 'Count towards Alerts'
FROM A,S

【讨论】:

  • 如何将其嵌入到我的查询中。这就是我苦苦挣扎的地方。
  • 你能分享你的表结构吗?我会尝试相应地编写查询。
  • @John,我已经用完整的查询编辑了我的答案。它适用于我的一些样本记录。你可以检查一下。
猜你喜欢
  • 1970-01-01
  • 2011-11-15
  • 2017-05-21
  • 2022-01-12
  • 2021-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-22
相关资源
最近更新 更多