此查詢將返回唯一的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