Выберите строки, в которых идентификатор одинаков, но имя содержит разные данные в более чем одной записи - PullRequest
0 голосов
/ 08 апреля 2020
ID  Name  
---------
1    ABC         
1    123              
2    BCD         
3    CDE         
4    AAA         
4    ZZZ         

Желаемый результат

ID  Name1      Name2 
---------------------
1    ABC        123                    
2    BCD        NULL
3    CDE        NULL 
4    AAA        ZZZ    

Ответы [ 2 ]

1 голос
/ 08 апреля 2020

Вы можете просто использовать агрегацию:

select id, min(name) name1, case when min(name) <> max(name) then max(name) name2
from mytable
group by id
1 голос
/ 08 апреля 2020

Вы можете использовать агрегацию:

select id, min(name) as name1,
       nullif(max(name), min(name)) as name2
from t
group by id;

Если вы просто хотите получить список всех имен, тогда используйте один столбец для имен и используйте group_concat():

select id, group_concat(name) as names
from t
group by id;
...