在Microsoft SQL上,我运行一个查询,返回大量具有名称和状态(以及许多其他列)的行,如下所示:
Name | State
------|------------
Bob | In Progress
Bob | In Progress
Sally | Complete
Sally | Not Started
Sally | In Progress
Bob | Not Started
每一行都有这三种状态中的一种,行可以按任何顺序出现。更令人讨厌的是,行可能会重复。如果有人在进步'然后,我不想看到他们的任何行“未开始”,如果他们是“完整”的话。然后我不想看到“正在进行中”#39;或者'未开始'。
因此,对于上述数据我只想看
Name | State
------|------------
Bob | In Progress
Sally | Complete
这是否可以使用SQL查询?
这是我现在正在使用的实际查询,但我仍然可以获得名称显示多个状态的条目。
答案 0 :(得分:0)
您似乎想要“最大”状态。这是一种方法:
select name, state
from (select name, state
row_number() over (partition by name
order by (case when State = 'Not Started' then 1
when State = 'In Progress' then 2
when State = 'Complete' then 3
else 0
end) desc
) as seqnum
from t
) t
where seqnum = 1;