简体   繁体   English

当 Archived_Date 为 NULL 并在 Age 列中返回 NULL 值时未计算 Statement Age 的情况

[英]Case When Statement Age not calculating when Archived_Date is NULL and returning NULL value in Age column

CASE    
    WHEN Isconverted = 'TRUE'    THEN DATEDIFF(DAY, Task_CreatedDate, OPP.CreatedDate)
    WHEN Isconverted = 'FALSE'   THEN DATEDIFF(DAY, Task_CreatedDate, A.Archived_Date)
    WHEN A.Archived_Date IS NULL THEN DATEDIFF(DAY, Task_CreatedDate, GETDATE())
    ELSE 'NULL'
END AS 'Age'

** Above case when statement is not calculating third line when Archive_Date is null I need the age column to be populated with current date - Task_CreatedDate ** ** 当 Archive_Date 为 null 时语句不计算第三行的上述情况我需要用当前日期填充年龄列 - Task_CreatedDate **

I assume for the cases that A.Archived_Date IS NULL, Isconverted is either true or false, so one of first two cases will be picked always.我假设 A.Archived_Date IS NULL 的情况下,Isconverted 为真或假,因此将始终选择前两种情况之一。

so if that is a priority over those you need to put it as the first case:因此,如果这是您需要将其作为第一种情况的优先级:

CASE    
    WHEN A.Archived_Date IS NULL THEN DATEDIFF(DAY, Task_CreatedDate, GETDATE())
    WHEN Isconverted = 'TRUE'    THEN DATEDIFF(DAY, Task_CreatedDate, OPP.CreatedDate)
    WHEN Isconverted = 'FALSE'   THEN DATEDIFF(DAY, Task_CreatedDate, A.Archived_Date)
    ELSE 'NULL'
END AS 'Age'

I think you want:我想你想要:

(CASE WHEN Isconverted = 'TRUE'
      THEN DATEDIFF(DAY, Task_CreatedDate, OPP.CreatedDate)
      ELSE DATEDIFF(DAY, Task_CreatedDate, COALESCE(A.Archived_Date, GETDATE()))
 END) AS Age

You can simplify your code by placing the CASE expression inside the DATEDIFF() function, where you can use COALESCE() to check if A.Archived_Date is NULL :您可以通过将CASE表达式放在DATEDIFF() function 中来简化代码,您可以在其中使用COALESCE()检查A.Archived_Date是否为NULL

DATEDIFF(
  DAY, 
  Task_CreatedDate, 
  CASE WHEN Isconverted = 'TRUE' THEN OPP.CreatedDate ELSE COALESCE(A.Archived_Date, GETDATE()) END
) AS Age

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM