首页 > 解决方案 > 在 SQL 中,当它可能有两个不同的观察值时,如何选择唯一的用户 ID?

问题描述

我有一个包含人名和国籍的表格。一个人可能有双重国籍,但如果他们有美国国籍,我只想要那个人的那一行。

前任:\

Name   Citizenship\
John       US\
John      England\
Jim       Germany\
Mark      US\
Mark      Belgium

预期产出

Name    Country\
John     US\
Jim      Germany\
Mark     US

提前感谢您的帮助。

标签: sqluniqueunion

解决方案


您可以使用ROW_NUMBER()窗口函数,如下所示:

select *
from (
  select name, citizenship,
    row_number() over(partition by name 
      order by case when citizenship = 'US' then 1 else 2 end, citizenship
    ) as rn
  from t 
) x
where rn = 1

推荐阅读