Sql server 2008 将多行中的数据合并到一行中
该表采用以下格式:Sql server 2008 将多行中的数据合并到一行中,sql-server-2008,Sql Server 2008,该表采用以下格式: ID Category 1 a 1 b 2 a 2 b 2 c 我想要以下格式的输出 ID Category 1 a,b 2 a,b,c 请建议一种有效的方法尝试以下查询: SELECT ID, REPLACE( (SELECT Category AS [data()] FROM T
ID Category
1 a
1 b
2 a
2 b
2 c
我想要以下格式的输出
ID Category
1 a,b
2 a,b,c
请建议一种有效的方法尝试以下查询:
SELECT ID,
REPLACE(
(SELECT Category AS [data()]
FROM TableA
WHERE b.ID=ID
ORDER BY Category FOR XML PATH('')),
' ', ', ')
FROM TableB b
GROUP BY ID
上次我遇到了类似的事情,我用程序解决了它。您需要在类别中为特定ID执行循环。可能类似于以下内容: 测试数据 质疑 可能的重复可能的重复
DECLARE @tbl TABLE(ID INT,Category VARCHAR(100))
INSERT INTO @tbl
VALUES
(1,'a'),
(1,'b'),
(2,'a'),
(2,'b'),
(2,'c')
;WITH CTE ----CTE Name
AS
(
SELECT
ROW_NUMBER() OVER(PARTITION BY ID ORDER BY ID) AS RowNbr,
ID,
Category
FROM
@tbl AS tbl
)
SELECT
CTE.ID,
(
STUFF
((
SELECT
','+Category
FROM @tbl AS tbl
WHERE tbl.ID=CTE.ID
FOR XML PATH('')
)
,1,1,'')
) AS Category
FROM
CTE
WHERE
CTE.RowNbr=1