[英]Select distinct row or particular value row if not distinct
我有一個表,如下所示,我想按ID獲取記錄,如果值b不存在,則值b,然后值b。 我在表中有一個關聯的日期量,可以按日期使用訂單。
我試圖從無法附加的手機發布屏幕圖像。 也不能發布我嘗試過的SQL,因為這里正式不允許這樣做。
我的解釋問題的嘗試如下
Persid. Value. Date
1 a
1 a
1 a
2 b
2 a
2 a
預期結果
1 a. Latest date
2 b any date
我曾嘗試在ID和值列上使用分組依據來獲取計數,但是我無法理解如何使用該計數來過濾出記錄。
任何幫助是極大的贊賞 :)
您可以使用row_number()
:
select id, value, date
from (select t.*,
row_number() over (partition by persid
order by value desc, date desc
) as seqnum
from t
) t
where seqnum = 1;
這將獲取任何值的最新日期。 請注意, value desc
是“ b”,因此出現在“ a”之前。 如果您的值不是按字母順序排序的,則可以使用case
或其他機制來設置正確的排序順序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.