Объединение двух строк в одну при замене нулевых значений - PullRequest
11 голосов
/ 16 июля 2010

Допустим, у меня есть следующая таблица базы данных

Name | Nickname | ID
----------------------
Joe    Joey       14
Joe    null       14

Теперь я хочу сделать оператор выбора, который объединяет эти два столбца в один при замене нулевых значений.Результат должен выглядеть следующим образом:

Joe, Joey, 14

Какой оператор SQL управляет этим (если это вообще возможно)?

Ответы [ 2 ]

17 голосов
/ 16 июля 2010

Самое простое решение:

SQL> select * from t69
  2  /

NAME       NICKNAME           ID
---------- ---------- ----------
Joe        Joey               14
Joe                           14
Michael                       15
           Mick               15
           Mickey             15

SQL> select max(name) as name
  2         , max(nickname) as nickname
  3         , id
  4  from t69
  5  group by id
  6  /

NAME       NICKNAME           ID
---------- ---------- ----------
Joe        Joey               14
Michael    Mickey             15

SQL>

Если у вас есть 11gR2, вы можете использовать новомодную функцию LISTAGG () , но в противном случае достаточно просто заключить приведенный выше оператор в SELECTкоторый объединяет столбцы NAME и NICKNAME.

0 голосов
/ 16 июля 2010

AFAIK, вопрос не ясен. Поэтому я делаю некоторые предположения здесь.ваш вывод имеет первый и третий столбцы для обеих строк одинаково.Отличается только 2-е поле.

, поэтому вы можете просто написать отборный квест

select one.name,two.nick_name,one.id from 
(select name,id from your_tb group by name,id) one,
your_tb two 
where two.nickname is not NULL 
and two.name=one.name 
and two.id=one.id;

, может быть, мы можем настроить это, но я не очень хорош в настройке sql squeries, но этокак я полагаю, тебе нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...