【发布时间】:2015-12-21 21:41:26
【问题描述】:
这感觉应该很容易。如何获取不同列中的 3 个日期中的最新日期
DROP TABLE #dates
CREATE TABLE #dates (mykey CHAR(10), date1 DATETIME, date2 DATETIME, date3 DATETIME)
INSERT #dates VALUES ('Key1', '1/1/2015', '2/1/2015', '3/1/2105')
INSERT #dates VALUES ('Key2', '1/2/2015', '4/2/2015', '3/2/2105')
INSERT #dates VALUES ('Key3', '1/3/2016', '4/3/2015', '3/3/2105')
select mykey, ?? AS 'Latest Date' from #dates
我希望结果是:
mykey Latest Date
Key1 2105-03-01 00:00:00.000
Key2 2015-04-02 00:00:00.000
Key3 2016-01-03 00:00:00.000
【问题讨论】:
-
您可以使用基于
UNION ALL/VALUES多列的派生表中的MAX轻松实现 -
我重新打开了这个问题,因为我认为下面的答案比引用的重复问题更好。
-
date3 也应该在 2015 年,而不是 2105 年才能获得您想要的结果,否则它将为所有键返回 date3
-
理想情况下,修复您的数据模型。相同“类型”的所有数据(以便将两个值相互比较是有意义的)应该在一个列中。当您为列编号时,通常表明数据已嵌入元数据中(即 1、2 和 3有意义,但无法编写使用这些数字的直接查询)或者您有任意限制(为什么停在3?)
标签: sql sql-server datetime