如何通过ID从表组中检索第一个和最后一个更新记录,其中最新更新记录是DEPT Sales。
ID DEPT DATETIME
=====================================
1 Account 2016:09:01 14:11:44
1 Account 2016:09:01 15:12:50
1 Account 2016:09:01 16:11:33
1 Sales 2016:09:01 18:19:34
1 Sales 2016:09:01 18:28:50
1 Sales 2016:09:01 18:35:22
2 HR 2016:09:01 18:25:50
2 Sales 2016:09:01 18:26:10
2 Sales 2016:09:01 18:34:44
3 HR 2016:09:01 18:27:50
3 Sales 2016:09:01 18:28:40
3 Sales 2016:09:01 18:35:22
4 HR 2016:09:01 18:27:50
4 Sales 2016:09:01 18:28:40
4 Admin 2016:09:01 18:35:22
预期输出
ID DEPT DATETIME
=====================================
1 Account 2016:09:01 14:11:44
1 Sales 2016:09:01 18:35:22
2 HR 2016:09:01 18:25:50
2 Sales 2016:09:01 18:34:44
3 HR 2016:09:01 18:27:50
3 Sales 2016:09:01 18:35:22
答案 0 :(得分:0)
这是一种方法:
select t.*
from t join
(select id, min(datetime) as mindt, max(datetime) as maxdt
from t
group by id
) tt
on t.id = tt.id and
t.datetime in (tt.mindt, tt.maxdt);
答案 1 :(得分:0)
假设id可能有2个以上的部门,而min必须来自除了' Sales'之外的所有部门。 DEPT,试试
select id
,(select min(DEPT)
from table t2
where t2.id = t.id and t2.datetime = t.mindt) as DEPT
,mindt as datetime
from (
select id, min(datetime) as mindt
from table
where DEPT !='Sales'
group by id) t
UNION ALL
select id, DEPT, max(datetime)
from table
where DEPT ='Sales'
group by id, DEPT