sql >> Database teknologi >  >> RDS >> Oracle

Oracle SQL - Konverter N rækkers kolonneværdier til N kolonner i 1 række

Forudsat at du er ligeglad med hvilken rækkefølge beskrivelserne returneres i (dvs. Jeremy Smith kunne lige så korrekt have en Description1 eller "Forvirret" og en Description2 af "Tall"), skal du blot dreje på rækkenummeret. Hvis du bekymrer dig om den rækkefølge, beskrivelserne returneres i, kan du tilføje en ORDER BY klausul til vinduesfunktionen i ROW_NUMBER analytisk funktion

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

Til gengæld håber jeg, at du faktisk gemmer en fødselsdato og beregner personens alder i stedet for at gemme alderen og antage, at folk opdaterer deres alder hvert år.



  1. Calling Oracle procedure med PL/SQL record Type fra Spring JDBC

  2. Ydeevnemyter:Klyngede vs. ikke-klyngede indekser

  3. Find forskellen mellem den seneste og den næstsidste term

  4. XMLTABLE i PostgreSQL