[英]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.