Giả sử rằng bạn không quan tâm thứ tự các mô tả được trả về (tức là Jeremy Smith có thể có một Description1
một cách chính xác hoặc "Nhầm lẫn" và Description2
của "Tall"), bạn chỉ cần xoay vào số hàng. Nếu bạn quan tâm đến thứ tự mà các mô tả được trả lại, bạn có thể thêm ORDER BY
mệnh đề cho hàm cửa sổ trong ROW_NUMBER
chức năng phân tích
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
Ngoài ra, tôi hy vọng rằng bạn đang thực sự lưu trữ ngày sinh và tính toán tuổi của người đó thay vì lưu trữ tuổi và giả định rằng mọi người đang cập nhật tuổi của họ hàng năm.