SQL:如何按任务分组并仅选择已完成的那些?

时间:2017-10-20 10:40:16

标签: sql sql-server

我正在使用SQL Server,我需要通过下一个方式从待办事项列表中进行查询。

ID  Date       Status  Phase
1   21.1.2017  Done    1
1   22.1 2017  Done    2
2   20.1.2017  Done    1
2   22.1.2017  Undone  2
3   23.1.2017  Undone  1
3   25.1.2017  Undone  2

所以我需要找到那些已完成的任务(所有状态都已完成),然后将最后一个日期设为MAX(日期)?我不需要阶段信息。

结果应为

ID  Date       Status 
1   22.1 2017  Done

你能帮我解决一下如何分组,取MAX(日期),还要制定所有状态都完成的规则​​吗?

2 个答案:

答案 0 :(得分:4)

你可以使用它。

SELECT TOP 1 [ID], [Date], [Status] FROM MyTable 
    WHERE [Status] ='Done'
    ORDER BY [Date] DESC

答案 1 :(得分:1)

这是一种方法:

select t.id, max(t.date) as date, max(t.status) as status
from t
group by t.id
having min(t.status) = max(t.status) and min(t.status) = 'Done';