説明が返される順序を気にしないと仮定します(つまり、JeremySmithがDescription1
を正しく持つことができます。 または「混乱」とDescription2
「背の高い」の場合)、行番号をピボットする必要があります。説明が返される順序が気になる場合は、ORDER BY
を追加できます。 ROW_NUMBER
のウィンドウ関数の句 分析関数
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
余談ですが、年齢を保存して毎年年齢を更新していると想定するのではなく、実際に生年月日を保存して年齢を計算していることを願っています。