簡體   English   中英

根據非數字優先級從許多相似行中選擇1個

[英]Select 1 of many similar rows based on non-numerical priority

我正在從具有許多相似行的表中提取數據,這些行在我想要的列中基於另一列的值包含不同的值。 我想使用某些非數字值的優先級從這些類似行的組中各提取1行。

在下面的示例中,我希望每個field1值中都有1行,如果有的話,給我在field2中具有“ W”的行。 如果“ W”在field2中不可用,那么我希望該行帶有“ C”。 如果“ C”不在字段2中,那么最后給我在字段2中帶有“ O”的行。

示例表:

field1  field2  field3  field4
1       O       1/1/13
1       W       1/1/13  5/2/13
2       C       1/1/13
2       O    
3       W               2/1/14
3       C       9/3/13  1/5/14
4       C               11/5/13
4       O       1/2/12
4       W       1/2/12  5/7/14
5       O      

所需結果:

field1  field2  field3  field4
1       W       1/1/13  5/2/13
2       C       1/1/13
3       W               2/1/14
4       W       1/2/12  5/7/14
5       O

謝謝!

您可以使用row_number()進行此操作:

select field1, field2, field3, field4
from (select t.*,
             row_number() over (partition by field1
                                order by (case when field2 = 'W' then 1
                                               when field2 = 'C' then 2
                                               when field2 = 'O' then 3
                                               else 4
                                         )
                               ) as seqnum
      from table t
     ) t
where seqnum = 1;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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