我想根据条件将列转换为行

时间:2015-03-20 05:29:44

标签: c# asp.net sql-server

我的sql查询返回以下输出。

enter image description here

在C#.Net中,我必须根据RowSequence和ColumnSequence列值将其转换为如下所示。 enter image description here

怎么做。

2 个答案:

答案 0 :(得分:2)

您必须使用动态数据透视,因为您需要旋转的行值未修复:

DECLARE @columns AS NVARCHAR(MAX), @query AS NVARCHAR(MAX)

select @columns = STUFF((SELECT ', ' + QUOTENAME(ColumnName) 
                    from YOURTABLE
                    group by ColumnName, ColumnSequesnce
                    order by ColumnSequesnce
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = N'SELECT ' + @columns + N' from 
             (
                select RowSequence, ColumnValue, ColumnName
                from YOURTABLE
            ) x
            pivot 
            (
                max(ColumnValue)
                for ColumnName in (' + @columns + N')
            ) p '

exec sp_executesql @query;

答案 1 :(得分:0)