【问题标题】:SQL Select for create daily log data from more than one date column frrom a single tableSQL Select 用于从单个表中的多个日期列创建每日日志数据
【发布时间】:2015-01-17 03:02:41
【问题描述】:

我有一张包含多个日期列的表格,
每个日期列都包含一个日期或空值,

我想编写一个 SQL 查询,它将每个列的日期显示到一个新行中,其中一个名为 LogDate 的新附加列包含相同的列日期。

很难解释,请参考附图。

【问题讨论】:

  • 三组的顺序重要吗?

标签: sql-server date select


【解决方案1】:

只需使用UNION ALL 连接三个结果集:

SELECT [ReceivedDate] AS LogDate, * FROM MyTable WHERE [ReceivedDate] IS NOT NULL
UNION ALL
SELECT [Closing Date] AS LogDate, * FROM MyTable WHERE [Closing Date] IS NOT NULL
UNION ALL
SELECT [LPODate] AS LogDate, * FROM MyTable WHERE [LPODate] IS NOT NULL

要按 LogDate 排序,只需将以下 ORDER BY 子句添加到此查询的末尾:

ORDER BY LogDate

【讨论】:

  • 我认为这是正确的答案。不过,我会在每个语句和 select 语句中为表添加别名: SELECT t.*, t.[...Date] as LogDate (因为它要求表的所有列+附加)。
  • 是的,我忘了在每个 LogDate 列之后添加 *。但是,无需为每个表设置别名,因为您无需在任何地方引用它们。
  • 是的,这就是我想要的。联合后的另一个问题,我将如何对 LogDate 进行排序。
  • 添加ORDER BY LogDate
猜你喜欢
  • 2018-04-13
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 2022-01-04
  • 1970-01-01
  • 1970-01-01
  • 2019-05-30
  • 1970-01-01
相关资源
最近更新 更多