लेकिन अगर आप डायनामिक चाहते हैं:Sql DEMO
row_id बनाने के लिए सबसे पहले आपको एक टेम्पोरल टेबल चाहिए
SELECT row_number() over (partition by [Country] order by [StateCity]) [rn],
[StateCity],
[Country]
INTO temp
FROM State;
फिर आप डायनेमिक पिवट रूट पर जा सकते हैं
अलग-अलग कॉलम बनाएं
SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.[Country])
FROM temp c
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
पिवट क्वेरी बनाएं:
set @query = 'SELECT rn, ' + @cols + ' from
(
select [rn]
, [StateCity]
, [Country]
from temp
) x
pivot
(
max(StateCity)
for [Country] in (' + @cols + ')
) p ';
इसे निष्पादित करें
execute(@query);
आउटपुट: