I have a SQL query which return the below data;
I need to write Values to one row depend ID
and Code
column like below;
I have a SQL query which return the below data;
I need to write Values to one row depend ID
and Code
column like below;
SELECT ID, Code, STRING_AGG(Value) AS Value
FROM dbo.Table
GROUP BY ID, Code;
Considering you're using up to date version.
Please check below attempt. There are other options also you can use.
SELECT
CAST(408 AS INT) AS ID,
CAST(1 AS INT) AS CODE,
CAST('A' AS VARCHAR(20)) AS VALUE
INTO
#tmpgroupby
INSERT INTO #tmpgroupby
VALUES
(408,1,'B'),
(408,1,'C'),
(408,1,'D'),
(408,1,'E'),
(408,1,'F'),
(408,1,'G'),
(408,2,'H'),
(408,2,'I'),
(408,2,'J'),
(408,2,'K')
SELECT ID,CODE, STUFF(
(SELECT ', ' + convert(varchar(10), t2.VALUE, 120)
FROM #tmpgroupby t2
where t1.ID = t2.ID
AND t1.code = t2.CODE
FOR XML PATH (''))
, 1, 1, '')
FROM #tmpgroupby t1
GROUP BY ID,CODE
--- below also give the same result
SELECT ID, Code, STRING_AGG(VALUE,',') AS Value
FROM dbo.#tmpgroupby
GROUP BY ID, Code;
DROP TABLE #tmpgroupby
For Sql Server:
SELECT ID, CODE,
Value=STUFF((SELECT distinct ',' + Value FROM table_name t1
WHERE t.Code = t1.Code FOR XML PATH ('')), 1, 1, '')
FROM table_name AS t
GROUP BY ID, Code