从每个ID的列表中取1行

时间:2017-08-06 16:50:02

标签: sql oracle

请帮助我使用SQL Oracle,每个ID组只显示1行结果,按以下DATE DESC排序:

从此列表中
表:员工

____________________________
ID | Employees | Date
___+___________+____________
1  | A         | 2017-08-01
1  | A         | 2017-08-08
2  | B         | 2017-07-01
2  | B         | 2017-07-10
2  | B         | 2017-07-05

结果

____________________________
ID | Employees | Date
___+___________+____________
1  | A         | 2017-08-08
2  | B         | 2017-07-10

3 个答案:

答案 0 :(得分:2)

有几种不同的方法可以实现这一目标。这实际上取决于您要使用哪些业务规则来选择每个员工的一个日期。您没有指定任何内容,但您想要的输出表明您需要最近的日期。如果是这样,您可以将max()聚合函数与GROUP BY子句一起使用。

select id,
        employees,
        max(date) as date
from employee
group by id,
         employees

答案 1 :(得分:1)

您可以使用分析功能:

Apollo Client docs

select *, RANK() OVER (PARTITION BY Employees ORDER BY date desc) from  Employees 

然后输入外部选择以选择等级1

答案 2 :(得分:0)

select id, emplyoees, max(date) as date1
from employees
group by id, emplyoees;