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.