Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle SQL — Konwertuj wartości kolumn z N wierszy na N kolumn w 1 wierszu

Zakładając, że nie obchodzi cię, w jakiej kolejności zwracane są opisy (np. Jeremy Smith może równie dobrze mieć Description1 lub „Zdezorientowany” i Description2 „Wysoki”), wystarczy obrócić na numer wiersza. Jeśli zależy Ci na kolejności zwracania opisów, możesz dodać ORDER BY klauzula do funkcji okna w ROW_NUMBER funkcja analityczna

SELECT firstName, 
       lastName,
       MAX( CASE WHEN rn = 1 THEN description ELSE NULL END ) description1,
       MAX( CASE WHEN rn = 2 THEN description ELSE NULL END ) description2,
       MAX( CASE WHEN rn = 3 THEN description ELSE NULL END ) description3
  FROM (SELECT firstName,
               lastName,
               description,
               row_number() over (partition by lastName, firstName) rn
          FROM descriptions
               JOIN people USING (firstName, lastName)
         WHERE age >= 25)
   GROUP BY firstname, lastname

Nawiasem mówiąc, mam nadzieję, że faktycznie przechowujesz datę urodzenia i obliczasz wiek danej osoby, zamiast przechowywać wiek i zakładać, że ludzie co roku aktualizują swój wiek.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego Oracle varchar2 ma obowiązkowy rozmiar jako parametr definicji?

  2. Powiązanie int64 (SQL_BIGINT) jako parametru zapytania powoduje błąd podczas wykonywania w Oracle 10g ODBC

  3. Wstaw plik tekstowy do Oracle za pomocą funkcji Bulk Insert

  4. Sterownik Oracle UCP i tomcat:wątki nie zatrzymują się

  5. GetOracle Wyciek pamięci dziesiętnej