0

我有员工审计表,其中包含每个员工的多行。例如: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
4

2 回答 2

2

您可以使用ROW_NUMBER()which 是生成序列号的分析函数。在这种情况下,按降序为每个emp_id排序依据生成序号。date最新更改将具有您可以过滤掉1的值。rn

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
于 2013-10-31T16:09:18.737 回答
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)
于 2013-10-31T16:09:25.983 回答