【问题标题】:SQL datediff from different columns来自不同列的 SQL datediff
【发布时间】: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?说到日期/时间,很多产品都有自己的功能。

标签: sql datediff


【解决方案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

【讨论】:

  • 艾伦,你知道你是摇滚明星,对吧?这绝对优雅地解决了我的问题。
猜你喜欢
  • 2021-05-24
  • 1970-01-01
  • 2013-12-04
  • 2018-01-07
  • 1970-01-01
  • 2022-10-17
  • 1970-01-01
  • 2015-05-22
  • 2020-10-25
相关资源
最近更新 更多