sql >> Databasteknik >  >> RDS >> Oracle

Slår ihop två rader till en samtidigt som null-värden ersätts

Enklaste lösningen:

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>

Om du har 11gR2 kan du använda den nymodiga LISTAGG()-funktionen men annars är det enkelt nog att linda in ovanstående sats i en SELECT som sammanfogar NAME- och SMEKNAMN-kolumnerna.



  1. Vilket är det mest effektiva sättet att trimma tiden från datetime?

  2. SQL aritmetiska operatörer

  3. 2 sätt att välja rader som matchar alla objekt i en lista (T-SQL)

  4. REGEXP_INSTR() Funktion i Oracle