How can I achieve this using SQL Server?
Can anyone please help me?
How can I achieve this using SQL Server?
Can anyone please help me?
Using PIVOT is what you need. Plenty of examples on Stack Overflow
To replicate the expected answer in the OP
DECLARE @tab TABLE (ID INT, CODE INT, ECODE VARCHAR(10))
INSERT INTO @tab
(ID, CODE, ECODE)
VALUES
(1, 101, 'error1'),
(1, 102, 'error2'),
(1, 103, 'error3'),
(1, 104, 'success'),
(2, 101, 'error1'),
(2, 102, 'error2'),
(2, 103, 'error3'),
(2, 104, 'success')
SELECT
T.ID
, MAX(CASE WHEN T.CODE = 101 THEN T.CODE END) 'CODE1'
, MAX(CASE WHEN T.ECODE = 'error1' THEN T.ECODE END) 'ECODE1'
, MAX(CASE WHEN T.CODE = 102 THEN T.CODE END) 'CODE2'
, MAX(CASE WHEN T.ECODE = 'error2' THEN T.ECODE END) 'ECODE2'
, MAX(CASE WHEN T.CODE = 103 THEN T.CODE END) 'CODE3'
, MAX(CASE WHEN T.ECODE = 'error3' THEN T.ECODE END) 'ECODE3'
, MAX(CASE WHEN T.CODE = 104 THEN T.CODE END) 'CODE4'
, MAX(CASE WHEN T.ECODE = 'Success' THEN T.ECODE END) 'ECODE4'
FROM @tab T
GROUP BY T.ID