SQL 来自不同列的 datediff

SQL datediff from different columns

我有一个 table 在一个字段或另一个字段(取决于另一个变量)中有一个行动日期(让我们称之为 X),问题是我需要获取日期'X' 发生了,所以我需要一个新列,其值为 column1 或 column2,具体取决于日期所在的位置。

我对此非常陌生,所以我一直在尝试不同的东西,现在尝试使用 CASE。

我得到了以下信息,但是我在新列“DATE_X_FINAL”中得到的所有值都是 NULL。

虽然我需要一个新专栏,但我现在正在尝试 select 看看我是否可以让它工作。

有什么想法吗?

SELECT [Date_X], [Date_X2], 
       CASE 
       WHEN [Date_X] = NULL THEN [Date_X2]
       END as DATE_X_FINAL
    FROM [DATABASE.TABLE] 

结果:

[Date_X]    [Date_X2]   DATE_X_FINAL
2020-12-23   NULL       NULL
2019-02-05   NULL       NULL
2019-02-13   NULL       NULL
2019-02-12   NULL       NULL
2019-02-06   NULL       NULL

In SQL null is not equal (=) to anything—not even to another null.

您使用 IS NULL 测试空值比较。

在标准 (ANSI) SQL - COALESCE 中有一个内置的便利函数可以执行此操作。 (“COALESCE() 函数 returns 列表中的第一个非空值。”)

SELECT Date_X, Date_X2
     , COALESCE(Date_X, Date_X2) AS 'DATE_X_FINAL' 
FROM DATABASE.TABLE