Angenommen, es ist Ihnen egal, in welcher Reihenfolge die Beschreibungen zurückgegeben werden (d. h. Jeremy Smith könnte genauso gut eine Description1
haben oder "Verwirrt" und eine Description2
von "Tall"), müssen Sie nur auf die Zeilennummer schwenken. Wenn Ihnen die Reihenfolge wichtig ist, in der die Beschreibungen zurückgegeben werden, können Sie einen ORDER BY
hinzufügen -Klausel zur Fensterfunktion in ROW_NUMBER
Analysefunktion
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
Abgesehen davon hoffe ich, dass Sie tatsächlich ein Geburtsdatum speichern und das Alter der Person berechnen, anstatt das Alter zu speichern und anzunehmen, dass die Leute ihr Alter jedes Jahr aktualisieren.