我将这些数据放在表格中。
create table pick_max_date
(
student_id int
,date1 datetime
,date2 datetime
,date3 datetime
,date4 datetime
)
insert into pick_max_date
(student_id,date1,date2,date3,date4)values
(1,'2015-06-01','2016-01-01','2014-01-01','2017-01-01')
,(2,'2016-06-01','2017-08-01','2018-01-01','2017-05-06')
,(3,'2013-06-01','2019-08-01','2012-01-01','2012-05-06')
select * from pick_max_date
我需要为每位学生选择最长日期,如下所示。
student_id max_date
---------- ----------
1 2017-01-01
2 2018-01-01
3 2019-08-01
如上所述选择的最佳方式是什么。任何帮助表示赞赏。
提前致谢
答案 0 :(得分:2)
构造列的派生表并从该表中选择最大值
select student_id,
(
select max(d.d)
from (values(date1),
(date2),
(date3),
(date4)
) as d(d)
) as max_date
from dbo.pick_max_date;
答案 1 :(得分:0)
答案 2 :(得分:0)
tableName
或
SELECT student_id ,
(SELECT Max(v) FROM (VALUES (date1), (date2), (date3)) AS value(v)) as maxdate
FROM pick_max_Date
答案 3 :(得分:0)
您可以执行已提及的values
表,如果列是静态的,只需使用case
:
select student_id
,(select max(d)
from (values(date1),(date2),(date3),(date4)) as tbl(d)) as MaxDate
,case when date1 >= date2 and date1 >= date3 and date1 >= date4 then date1
when date2 >= date1 and date2 >= date3 and date2 >= date4 then date2
when date3 >= date1 and date3 >= date2 and date3 >= date4 then date3
else date4
end as MaxDate2
from pick_max_date