यह मानते हुए कि आपको परवाह नहीं है कि विवरण किस क्रम में लौटाए गए हैं (यानी जेरेमी स्मिथ के पास Description1
ठीक उसी तरह हो सकता है या "भ्रमित" और एक Description2
"लंबा"), आपको बस पंक्ति संख्या पर पिवट करने की आवश्यकता है। यदि आप उस आदेश की परवाह करते हैं जिसमें विवरण लौटाए गए हैं, तो आप एक ORDER BY
add जोड़ सकते हैं 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
एक तरफ के रूप में, मैं उम्मीद कर रहा हूं कि आप वास्तव में एक जन्म तिथि संग्रहीत कर रहे हैं और व्यक्ति की उम्र की गणना कर रहे हैं, न कि उम्र को संग्रहीत करने और यह मानने के लिए कि लोग हर साल अपनी उम्र को अपडेट कर रहे हैं।