sql >> Databáze >  >> RDS >> Oracle

Oracle SQL - Převod hodnot sloupců N řádků na N sloupců v 1 řádku

Za předpokladu, že je vám jedno, v jakém pořadí jsou popisy vráceny (tj. Jeremy Smith by mohl mít stejně správně Description1 nebo "Confused" a Description2 z "Tall"), stačí se otočit na číslo řádku. Pokud vám záleží na pořadí, ve kterém jsou popisy vráceny, můžete přidat ORDER BY klauzule k funkci okna v ROW_NUMBER analytická funkce

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

Kromě toho doufám, že ve skutečnosti ukládáte datum narození a vypočítáváte věk dané osoby, spíše než abyste ukládali věk a předpokládali, že lidé svůj věk každý rok aktualizují.



  1. Úplný název instalace JDK pro Oracle SQL Developer

  2. Co může způsobit občasné chyby ORA-12519 (TNS:nebyla nalezena žádná vhodná obsluha).

  3. Ukládání mikrosekund v MySQL:jaké řešení?

  4. Hexadecimální hodnota 0x00 je neplatný znak