我正在使用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(日期),还要制定所有状态都完成的规则吗?
答案 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';