此查询将返回唯一的status_id,但前提是这些status_id与其他字段中的每一个的组合都是唯一的。您可以选择唯一的status_id,但如果每个status_id有多个组合,则不能返回其他字段的所有值。
[编辑]
如果你想只为每个状态的第一个记录:
select
status_id, schedule_id, cassay_id, time_of_day, days, notify_to_addresses, active
from
(select
row_number() over (partition by status_id order by 1) as number,
status_id, schedule_id, cassay_id, time_of_day, days, notify_to_addresses, active
FROM ordertest)
where
number = 1
相反的row_number
,dense_rank
和rank
使用,以及不同种类的编号,但在这种情况下,你确实需要一行,row_number就足够了。
不确定order by
是强制性的。如果不是的话,你可以放弃它。如果是,您可以指定一个虚拟值或指定一个特定的字段作为“第一行”。例如,加速order by schedule_id
以返回每个status_id的最低schedule_id。
'distinct'适用于select中的所有列,而不仅仅是第一列。 –
如果'status_id'有多个出现,并且只想出现一个匹配项,那么您如何选择将哪一行用于其余列? –
是否有可能只为第一个图层进行过滤...... – Winz