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



我正在使用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(日期),但也制定一些规则,所有状态都已完成吗?

你可以

使用它。

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

这里有一种方法:

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';

最新更新