如何从列表中选择一个值

时间:2020-08-25 13:13:04

标签: sql

如果状态很多,我想选择一个记录。 例如,如果存在相同的用户且状态A,B,C,则仅选择记录“ A”。 如果存在相同的用户,并且状态B,C,则选择B;如果只有一种状态,则将其带入。

=======================
User    Name    Status
=======================
123 |   Alice   | B
123 |   Alice   | A
123 |   Alice   | C
124 |   Mark    | C
125 |   Jonh    | B
126 |   Pate    | B
126 |   Pate    | C

预期结果

=======================
User    Name    Status
=======================
123 |   Alice   | A
124 |   Mark    | C
125 |   Jonh    | B
126 |   Pate    | B

有人可以提出建议吗? 谢谢

2 个答案:

答案 0 :(得分:2)

group by可以满足您的需求,并且比分析函数要容易一些:

select user, name, min(status) as status
  from yourtable
  group by user, name;

答案 1 :(得分:0)

使用row_number选择第一条记录:

SELECT X.* FROM
 (
SELECT A.*, 
ROW_NUMBER() OVER(PARTITION BY USER, NAME ORDER BY STATUS) RN FROM
TABLE1
) X WHERE RN = 1;
相关问题