如果状态很多,我想选择一个记录。 例如,如果存在相同的用户且状态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
有人可以提出建议吗? 谢谢
答案 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;