2013-12-09 4 views
0

я следующее:Поворотные строк данных в одном столбце

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 

И я пытаюсь отобразить его в один столбец результат наподобие следующего:

Бумеранг | Боулинг | Бокс | Bull Fighting

Однако я не знаю, как это сделать. Я заглянул в Pivot, но, похоже, это не касается моей проблемы.

+0

http://stackoverflow.com/a/17591536/335858 – dasblinkenlight

ответ

3

Это еще один способ сделать это с помощью string concatenation с Isnull() [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 
2
SELECT STUFF(
     (
      SELECT '|' + testing 
      FROM #temp 
      FOR XML PATH(''), TYPE 
     ).value('.', 'NVARCHAR(MAX)'), 1, 1, '') list 

Выход:

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

Вот SQLFiddle демо

+0

Помогло ли это? Вам нужна дополнительная помощь по вашему вопросу? – peterm

Смежные вопросы