因此,使用case语句可以获得满足When条件的最后一个条目。 考虑一下这个
Case when hireDate > getDate() THEN hireDate END;
ID HireDate
101 '07-28-2016'
101 '08-02-2016'
101 '08-04-2016'
现在有了上面编写的数据,sql server将始终输出07-28-2016,因为它的第一个条目满足条件。有没有办法在这个案例中获得最新的雇佣日期,例如08-04-2016。
答案 0 :(得分:2)
以下是使用conditional aggregation
的一个选项:
alter view XYZ as
select id, max(case when hireDate > getDate() then hireDate end) maxdate
from abc
group by id
答案 1 :(得分:0)
因此,使用case语句可以获得满足When条件的最后一个条目。
你可以做一些事情,比如每组获得最大值并查询它。
;with cte
as
(
select id,max(date) as hiredate
from yourtable
group by id
)
select
id,
case when hiredate>getdate() then hiredate else null end as 'hiredate'
from cte
答案 2 :(得分:0)
使用子查询而不是CASE表达式:
(SELECT MAX(hiredate) FROM MyTable t2 WHERE hiredate > GetDate() AND t2.PKColumn = MyTable.PKColumn)