代码之家  ›  专栏  ›  技术社区  ›  f00860

将多行分组并连接到一行

  •  1
  • f00860  · 技术社区  · 14 年前

    我想把所有的“文本”行“连接”成一行,结果得到一行。这是可能的吗?我使用MSSQL Server 2005。

    单列并得到一行结果。这是可能的吗?我使用的是MSSQLServer2005。

    3 回复  |  直到 14 年前
        1
  •  2
  •   VladV    14 年前

    用于XML路径:

    SELECT [Text]+' ' AS 'text()' FROM _table FOR XML PATH('')
    

    另一个选项-使用字符串串联:

    DECLARE @s nvarchar(max)
    SELECT @s = ISNULL(@s, '') + t + ' '  FROM _table OPTION (MAXDOP 1)
    SELECT @s
    

    请注意,后一个不能保证有效,afaik,对于多行结果集,“@s=@s+…”的行为是未定义的。
    MAXDOP 1 这里使用提示来防止优化器创建Parralel执行计划,因为这样肯定会产生不正确的结果。

        2
  •  2
  •   John Bledsoe    14 年前

    我相信你在找这样的东西:

    DECLARE @string nvarchar(max)
    SET @string = N''
    
    SELECT @string = @string + [Text] + N' ' FROM [YourTable]
    
    SELECT @string
    

    这将把[文本]列的所有值连接到一个变量中。然后您可以选择变量来检索一行中的所有值。

        3
  •  0
  •   Fermin    14 年前

    类似:

    DECLARE @result varchar(max)
    
    SELECT @result = COALESCE(@result + ' ','') +[Text] FROM [Table]
    SELECT @result
    
    推荐文章