我有一个返回一些看起来与此类似的数据的查询:
Select DISTINCT ID_NUM, CRS_ID, ACTION FROM MY_TABLE
返回的数据如下所示:
ID Num | CRS_ID | ACTION
1111111 | ABC_DEF | ç
1111111 | ABC_DEF | d
1111111 | GHI_JKL | ç
2222222 | ABC_DEF | ç
2222222 | GHI_JKL | ç
我需要操作数据,以便在ID_NUM和CRS_ID组合有多个行的情况下,如果有多个操作值,它将只返回带有“C”的一行。如果只有一个值,它应该保持不变。
答案 0 :(得分:2)
以下是使用ROW_NUMBER执行此操作的一种方法。
select ID_NUM
, CRS_ID
, ACTION
from
(
Select ID_NUM
, CRS_ID
, ACTION
, ROW_NUMBER() over(partition by ID_NUM, CRS_ID order by case when Action = 'C' then 1 else 2 end) as RowNum
FROM MY_TABLE
) x
where x.RowNum = 1