Как отобразить нулевое значение, когда запись присутствует более одного раза в Oracle SQL

У меня есть набор результатов, как следующие:

1001    abcdefg
1001    dghfkdk
1001    lkjkjkl
1002    kkjhjkh
1003    iuoiuoi
1003    kjljklj

Я хочу отобразить нулевое значение в столбце 1, когда оно более одного раза.

Например:

1001    abcdefg
null    dghfkdk
null    lkjkjkl
1002    kkjhjkh
1003    iuoiuoi
null    kjljklj

Может ли кто-нибудь помочь мне в этом? Заранее спасибо.

1 ответ

Решение

Вы можете использовать row_number:

select case when ranking = 1
        then id
        else null
        end as id
    , column_txt
from
(
    select id
        , column_txt
        , row_number() over (partition by id order by column_txt) as ranking
    from table
)t
Другие вопросы по тегам