【发布时间】:2015-01-17 03:02:41
【问题描述】:
我有一张包含多个日期列的表格,
每个日期列都包含一个日期或空值,
我想编写一个 SQL 查询,它将每个列的日期显示到一个新行中,其中一个名为 LogDate 的新附加列包含相同的列日期。
很难解释,请参考附图。
【问题讨论】:
-
三组的顺序重要吗?
标签: sql-server date select
我有一张包含多个日期列的表格,
每个日期列都包含一个日期或空值,
我想编写一个 SQL 查询,它将每个列的日期显示到一个新行中,其中一个名为 LogDate 的新附加列包含相同的列日期。
很难解释,请参考附图。
【问题讨论】:
标签: sql-server date select
只需使用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
【讨论】:
LogDate 列之后添加 *。但是,无需为每个表设置别名,因为您无需在任何地方引用它们。
ORDER BY LogDate。