我正在使用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';