我有一个查询,它返回一些数据,如下所示:
Select DISTINCT ID_NUM, CRS_ID, ACTION FROM MY_TABLE返回的数据如下所示:
ID Num | CRS_ID |动作
1111111|ABC_DEF |C
1111111|ABC_DEF |D
1111111|GHI_JKL |C
2222222|ABC_DEF |C
2222222|GHI_JKL |C
我需要操作数据,以便在ID_NUM和CRS_ID组合有多个行的情况下,在有多个操作值的情况下,它只返回一行带有'C‘的行。如果只有一个值,它应该保持原样。
发布于 2017-02-01 22:41:39
以下是使用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 = 1https://stackoverflow.com/questions/41982391
复制相似问题