sql server多行合并成一行

在SQL Server中,可以使用 FOR XML PATH 语句将多行数据合并成一行。具体步骤如下:

假设有以下表格结构:

CREATE TABLE TblData (
  Col1 varchar(50),
  Col2 varchar(50)

并且有以下数据:

Col1        Col2
------------------

现在我们想要将Col1相同的行合并成一行,并且在一行中将Col2的值用逗号隔开。即需要得到以下结果:

Col1        Col2
------------------
A           1,2,3
B           4,5

我们可以使用以下SQL语句实现此目的:

SELECT Col1, STUFF((
    SELECT ',' + Col2
    FROM TblData d2
    WHERE d1.Col1 = d2.Col1
    FOR XML PATH('')
  ), 1, 1, '') AS Col2
FROM TblData d1
GROUP BY Col1;

上述SQL语句中的STUFF()函数用于去除第一个逗号,FOR XML PATH('')用于将多行数据合并成一行,并且将每个Col2值用逗号隔开。最后使用GROUP BYCol1相同的行合并成一行。

希望这个回答对您有帮助。

  •