【发布时间】:2014-07-14 21:01:25
【问题描述】:
ID Date1 Date2 Date3
158 5/3/13 15:11 2/20/13 11:38 2/20/13 11:38
我想从这三列中获取最新日期。
【问题讨论】:
-
使用 case 语句。
标签: sql sql-server sql-server-2008 tsql
ID Date1 Date2 Date3
158 5/3/13 15:11 2/20/13 11:38 2/20/13 11:38
我想从这三列中获取最新日期。
【问题讨论】:
标签: sql sql-server sql-server-2008 tsql
SELECT CASE WHEN Date1 IS NOT NULL
AND Date1>=COALESCE(Date2,CAST('0001-01-01 00:00' AS DATETIME2))
AND Date1>=COALESCE(Date3,CAST('0001-01-01 00:00' AS DATETIME2)) THEN Date1
WHEN Date2 IS NOT NULL
AND Date2>=COALESCE(Date1,CAST('0001-01-01 00:00' AS DATETIME2))
AND Date2>=COALESCE(Date3,CAST('0001-01-01 00:00' AS DATETIME2)) THEN Date2
WHEN Date3 IS NOT NULL
AND Date3>=COALESCE(Date1,CAST('0001-01-01 00:00' AS DATETIME2))
AND Date3>=COALESCE(Date2,CAST('0001-01-01 00:00' AS DATETIME2)) THEN Date3
END AS latest
FROM t1
【讨论】:
尝试使用CASE:
SELECT ID,
CASE WHEN Date1>=Date2 AND Date1>=Date3 THEN Date1
WHEN Date2>=Date1 AND Date2>=Date3 THEN Date2
WHEN Date3>=Date1 AND Date3>=Date2 THEN Date3
END AS GreatestDate
FROM TableName
【讨论】:
SELECT CASE WHEN date1 > date2 AND date1 > date3 THEN date1
WHEN date2 > date3 THEN date2
ELSE date3 END MaxDate
FROM TableName
【讨论】:
请尝试使用 UNPIVOT
SELECT MAX(MaxDt) MaxDt
FROM tbl
UNPIVOT
(MaxDt FOR E IN
(Date1, Date2, Date3)
)AS unpvt;
【讨论】:
这可能对你有帮助
select case when Date1 > Date 2 then case when Date1 > Date3 then Date1 end
when Date2 > Date3 then Date2
else Date3 from <yortable>
【讨论】:
试试这个...:)
select top 1 a.date from
(
select Date1 as date from table_name where Id='158'
union
select Date2 as date from table_name where Id='158'
union
select Date3 as date from table_name where Id='158'
)a
order by a.date DESC;
【讨论】:
SELECT
CASE
WHEN Date1 >= Date2 AND Date1 >= Date3 THEN Date1
WHEN Date2 >= Date1 AND Date2 >= Date3 THEN Date2
WHEN Date3 >= Date1 AND Date3 >= Date2 THEN Date3
ELSE Date1
END AS MostRecentDate
或
SELECT MAX(date_columns) AS max_date
FROM
(
(SELECT date1 AS date_columns FROM tablename)
UNION
(SELECT date2 AS date_columns FROM tablename)
UNION
(SELECT date3 AS date_columns FROM tablename)
) AS date_query
【讨论】: