मैं CASE अभिव्यक्ति के साथ GROUP BY समाधान का उपयोग करना पसंद करता हूं।
SELECT
id,
MAX(CASE WHEN emailRank = 1 THEN email END) AS [1],
MAX(CASE WHEN emailRank = 2 THEN email END) AS [2],
MAX(CASE WHEN emailRank = 3 THEN email END) AS [3],
MAX(CASE WHEN emailRank = 4 THEN email END) AS [4]
FROM (
SELECT
id,
email,
ROW_NUMBER() OVER (PARTITION BY id ORDER BY email) AS emailRank
FROM TABLE
)
GROUP BY id;
मूल पिवट उदाहरण में टाइप और गायब ")" था। पिवट काम करने के लिए निम्नलिखित प्रयास करें:
pivot( max(email) FOR emailRank IN (1,2,3));