Одна строка Базовый SQL Pivot? - PullRequest
4 голосов
/ 08 сентября 2011

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

Milk
Eggs
Butter
Cheese
Bread

Я хочу, чтобы сводить всю строку в столбец выглядит следующим образом:

Milk Eggs Butter Cheese Bread

Я нашелмножество примеров использования его с несколькими столбцами и строками или на основе выбранных условий.Я не нашел примеров того, как сделать один ряд, и я не могу понять это.Спасибо за помощь!

Редактировать: Приведенные ниже способы прекрасно работают, но есть ли способ сделать это и превратить значение строки в значение столбца?

Ответы [ 3 ]

7 голосов
/ 08 сентября 2011
select your_column_name+' ' from your_table for XML PATH ('')

Вернется

Milk Eggs Butter Cheese Bread 

Вот весь сценарий:

declare @Q as table 
(name varchar(50))

insert into @Q
values
('Milk'),
('Eggs'),
('Butter'),
('Cheese'),
('Bread')

select name+' ' from @Q for XML PATH ('')
2 голосов
/ 08 сентября 2011

Используя модифицированную версию образца здесь .

DECLARE
    @SQL varchar(MAX),
    @ColumnList varchar(MAX)

SELECT @ColumnList=
       COALESCE(@ColumnList + ',','') + QUOTENAME(your_column_name)
FROM
(
       SELECT DISTINCT your_column_name
       FROM your_table 
) T


SET @SQL = '
WITH PivotData AS
(
       SELECT your_column_name
       FROM your_table
)
SELECT
    ' + @ColumnList + '
FROM
    PivotData
PIVOT
(
    MAX(your_column_name)
    FOR your_column_name
    IN (' + @ColumnList + ')
) AS PivotResult'

EXEC (@SQL)

PS Мне бы пришлось серьезно задуматься, почему я это делал.:)

2 голосов
/ 08 сентября 2011

Пожалуйста, перейдите по этой ссылке, вы получите представление

http://databases.aspfaq.com/general/how-do-i-concatenate-strings-from-a-column-into-a-single-row.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...