将一列的值连接到单个文本

时间:2015-07-10 22:45:16

标签: sql sql-server sql-server-2008 sql-server-2008-r2 sql-server-2012

我的专栏是这样的:

COL1

玛丽

杰克

约翰

我需要得到这样的东西: 玛丽,杰克,约翰

我是通过使用"对于XML PATH"来做的,但问题是该段在SQL Server视图中不起作用, 有没有其他方法来连接一列?

2 个答案:

答案 0 :(得分:3)

尝试使用SQL COALESCE exression将列值转换为逗号分隔的字符串。

这是你需要做的。

DECLARE @test TABLE (
  SampleCol varchar(50)
)

INSERT INTO @Test
  VALUES ('Test')
INSERT INTO @Test
  VALUES ('Test 1')
INSERT INTO @Test
  VALUES ('Test 2')
INSERT INTO @Test
  VALUES ('Test 3')
INSERT INTO @Test
  VALUES ('Test 4')

DECLARE @aa varchar(200)
SET @aa = ''

SELECT
  @aa =
  COALESCE(CASE
    WHEN @aa = '' THEN SampleCol
    ELSE @aa + ',' + SampleCol
  END
  , '')
FROM @test

SELECT
  @aa

这是一个完整的 SQLFIDDLE

答案 1 :(得分:0)

试试这个:

DECLARE @tbl TABLE(col1 VARCHAR(10));
INSERT INTO @tbl VALUES('Mary'),('Jack'),('John');
SELECT
STUFF
(
    (
        SELECT ', ' + col1
        FROM @tbl
        FOR XML PATH('')
    )
,1,2,'')