将动态行插入单个列

时间:2012-10-30 05:46:49

标签: sql sql-server-2005

  

可能重复:
  Simulating group_concat MySQL function in Microsoft SQL Server 2005?

如何将行(动态)插入由空格连接到临时表的单个列。我正在使用SQL Server 2005。

实施例。 LetterTable

LetterID LetterRow
    1        a
    2        b
    3        c
    4        d
    5        e

插入临时表,如

#TempTable

LetterID LetterRow
    1     a b c d e

提前致谢。

1 个答案:

答案 0 :(得分:1)

我不太明白,为什么你的LetterID在第一个例子中等于1,但你可以试试这个(这样的解决方案对于分组行中的连接很有用)

insert into #TempTable (LetterID, LetterRow)
select
    min(L.LetterID) as LetterID,
    stuff(
        (
            select ' ' + T.LetterRow
            from LetterTable as T
            for xml path(''), type
        ).value('.', 'nvarchar(max)')
   ,1,1, '') as LetterRow
from LetterTable as L

对于一行,你也可以这样写:

declare @LetterRow nvarchar(max), @LetterID int

select @LetterID = min(LetterID) from LetterTable
select @LetterRow = isnull(@LetterRow + ' ', '') + LetterRow from LetterTable

insert into #TempTable (LetterID, LetterRow)
select @LetterID, @LetterRow