A Microsoft extension to the ANSI SQL language that includes procedural programming, local variables, and various support functions.
Hi @kirankumar-3620
- Use static PIVOT, check this:
CREATE TABLE #Sample (Identifier_Column VARCHAR(20),data INT)
INSERT INTO #Sample VALUES
('India',323),('India',324),('India',325),('US',326),('US',327),
('UK',334),('UK',335),('UK',336),('Japan',337),('Japan',338)
;WITH CTE AS
(
SELECT Identifier_Column,data,ROW_NUMBER()OVER(PARTITION BY Identifier_Column ORDER BY data)AS RNum
FROM #Sample
)
SELECT [India],[US],[UK],[Japan] FROM CTE
PIVOT(MAX(data) FOR Identifier_Column IN ([India],[US],[UK],[Japan]))P
2)To avoid typing Identifier_Columns manually, try using Dynamic PIVOT, check this:
DECLARE @sql_str VARCHAR(8000)
DECLARE @Identifier_Columns VARCHAR(8000)
SELECT @Identifier_Columns = ISNULL(@Identifier_Columns + ',','') + QUOTENAME(Identifier_Column)
FROM #Sample GROUP BY Identifier_Column
--PRINT @Identifier_Columns
SET @sql_str = '
;WITH CTE AS
(
SELECT Identifier_Column,data,ROW_NUMBER()OVER(PARTITION BY Identifier_Column ORDER BY data)AS RNum
FROM #Sample
)
SELECT '+ @Identifier_Columns +' FROM CTE
PIVOT(MAX(data) FOR Identifier_Column IN ('+ @Identifier_Columns +'))P'
PRINT (@sql_str)
EXEC (@sql_str)
GO
Output:

Best regards,
LiHong
If the answer is the right solution, please click "Accept Answer" and kindly upvote it. If you have extra questions about this answer, please click "Comment".
Note: Please follow the steps in our Documentation to enable e-mail notifications if you want to receive the related email notification for this thread.