来自不同列的 SQL datediff
Posted
技术标签:
【中文标题】来自不同列的 SQL datediff【英文标题】:SQL datediff from different columns 【发布时间】:2021-11-29 08:22:14 【问题描述】:我有一个表,在一个字段或另一个字段(取决于另一个变量)中有一个操作日期(我们称之为 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
【问题讨论】:
您使用的是哪个 dbms?说到日期/时间,很多产品都有自己的功能。 【参考方案1】:In SQL null is not equal (=) to anything—not even to another null.
您使用IS NULL 测试空比较。
在标准 (ANSI) SQL - COALESCE 中有一个内置的便利函数来执行此操作。 (“COALESCE() 函数返回列表中的第一个非空值。”)
SELECT Date_X, Date_X2
, COALESCE(Date_X, Date_X2) AS 'DATE_X_FINAL'
FROM DATABASE.TABLE
【讨论】:
艾伦,你知道你是摇滚明星,对吧?这绝对优雅地解决了我的问题。以上是关于来自不同列的 SQL datediff的主要内容,如果未能解决你的问题,请参考以下文章