我在数据库中有一个表,其行如下:
Milk
Eggs
Butter
Cheese
Bread
我想将整行旋转到一列,如下所示:
Milk Eggs Butter Cheese Bread
我找到了很多使用多列和行或基于选择条件的示例。我还没有找到任何如何做一行的例子,我无法弄明白。谢谢您的帮助!
编辑: 下面的方法工作得很好但有没有办法将行值转换为列值?
答案 0 :(得分:7)
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 ('')
答案 1 :(得分:2)
请看这个链接,你会有所了解
答案 2 :(得分:2)
使用示例here的修改版本。
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)
P.S。我必须认真质疑为什么我这样做。 :)