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