我有员工审计表,每个员工都有多行。 EX:EMP_TABLE
Emp_id Manager_id Date
1 1 Sep'13
1 2 Sep'13
1 3 Oct'13
2 1 Jan'13
2 1 Feb'13
3 1 Jan'13
3 1 Mar'13
3 2 Feb'13
3 2 Jan'13
输出我正在寻找表
最新员工更改行
根据上表,需要输出
Emp_id Manager_id Date
1 3 Oct'13
2 1 Feb'13
3 1 Mar'13
我尝试了以下查询
select emp_id,Manager_id,MAX(Date)
from Emp_Table
Group by emplid
答案 0 :(得分:2)
您可以使用ROW_NUMBER()
这是一个生成序号的分析函数。在这种情况下,按emp_id
按降序排序的每date
生成序号。最新更改的1
rn
值可以过滤掉。{/ p>
SELECT Emp_ID, manager_ID, Date
FROM
(
SELECT Emp_ID, manager_ID, Date,
ROW_NUMBER() OVER (PARTITION BY Emp_ID ORDER BY DATE DESC) rn
FROM tableName
) a
WHERE rn = 1
答案 1 :(得分:0)
SELECT emp_id,
Manager_id,
Date
FROM Emp_Table
WHERE (emp_id, Date) in
(select emp_id,
MAX(Date)
from Emp_Table
group by emp_id)