【发布时间】:2018-12-10 22:25:33
【问题描述】:
我有一个数据集,我试图在其中找到以下内容: 如果 statusid = 113917,那么我想找到最大日期并将其称为“startstatusdate”。如果statusid = 49938,那么我会找到最大日期并将其称为“endstatusdate”。
declare @t table(practid int, statusid int, statusdate date)
insert into @t values (1, 113917, '2018-03-01'),
(1, 113917, '2018-04-01'),
(1, 113917, '2018-05-01'),
(1, 49938, '2018-06-01'),
(2, 113917, '2018-03-15'),
(2, 113917, '2018-03-18'),
(2, 49938, '2018-04-22')
我想要这样的结果:
practid startstatusdate endstatusdate
1 2018-03-01 2018-06-01
2 2018-03-15 2018-04-22
我可以使用两个临时表来创建它,一个获取最大 startstatusdate,另一个获取最大 endstatusdate,然后加入这些表。但我想在一个查询中执行此操作。
我正在尝试这样的事情:
Select practid,
(select max(statusdate)
from Table A
where statusid = 113917) as startstatusdate,
(select max(statusdate)
from Table A
where statusid = 49938) as endstatusdate
from Table A
group by practid
【问题讨论】:
-
你可以通过CASE statement来做到这一点
标签: sql-server select max aggregate-functions