将行数据旋转到单个列中

时间:2013-12-09 10:43:00

标签: sql sql-server-2008 tsql

我有以下内容:

BEGIN TRANSACTION

CREATE TABLE #temp
(
    testing VARCHAR(MAX)
)
INSERT INTO #temp
  ( testing )
VALUES ('Boomerang')
INSERT INTO #temp
  ( testing )
VALUES ('Bowling')
INSERT INTO #temp
  ( testing )
VALUES ('Boxing')
INSERT INTO #temp
  ( testing )
VALUES ('Bull Fighting')


SELECT *
FROM #temp

ROLLBACK TRANSACTION

我正在尝试将其显示为单列结果,如下所示:

  

回旋镖|保龄球|拳击|斗牛

但是我不知道该怎么做。我看过Pivot,但它似乎没有解决我的问题。

2 个答案:

答案 0 :(得分:3)

这是使用string concatenationIsnull() [or coalesce()] function进行此操作的另一种方法。

<强> Fiddle demo

declare @str varchar(max)

Select @str = isnull(@str + '|', '') + testing
From temp
Order by testing

Select @str
--Results
Boomerang|Bowling|Boxing|Bull Fighting

答案 1 :(得分:2)

SELECT STUFF(
        (
          SELECT '|' + testing
            FROM #temp
             FOR XML PATH(''), TYPE
        ).value('.', 'NVARCHAR(MAX)'), 1, 1, '') list

输出:

| LIST                                   |
|----------------------------------------|
| Boomerang|Bowling|Boxing|Bull Fighting |

这是 SQLFiddle 演示