2017-02-01 50 views
1

我有一個將一些數據看起來類似於這樣的查詢:SQL結果返回值時,其中一列具有一定的價值

Select DISTINCT ID_NUM, CRS_ID, ACTION FROM MY_TABLE 

返回的數據是這樣的:

ID Num | CRS_ID | ACTION

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'。如果只有一個值,它應該保持原樣。

+0

不知道爲什麼這得到了downvoted。格式化有點粗糙,但問題本身很明確,並且有足夠的信息來提供和回答。 –

回答

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 
相關問題