簡體   English   中英

選擇不同的行或特定值的行(如果沒有不同)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM