Sql server 如何使用SQL server透视表?

Sql server 如何使用SQL server透视表?,sql-server,Sql Server,我有一个表名叫tblOperation。我想将输出行转换为列 例如: SNO Operation --------------------- 1 OP10 2 OP20 3 OP20 . . . . N N 我需要以下输出格式: OP10 OP20 OP30.....N 怎么做 请帮我解决这个问题。这是问题 SELECT * FROM piovoit PIVOT(max(sn

我有一个表名叫tblOperation。我想将输出行转换为列

例如:

SNO      Operation
---------------------
1        OP10
2        OP20
3        OP20
.         .
.         .
N         N
我需要以下输出格式:

OP10      OP20     OP30.....N
怎么做

请帮我解决这个问题。

这是问题

SELECT *
FROM piovoit
PIVOT(max(sno) 
      FOR opration IN ([OP10],[OP20],[OP30])) AS PVTTable

在这种情况下,最好使用动态SQL:

DECLARE @sql nvarchar(max), 
        @cols nvarchar(max)

SELECT @cols = STUFF((
    SELECT DISTINCT ','+QUOTENAME(Operation) 
    FROM tblOperation
    FOR XML PATH('')),1,1,'')

SELECT @sql = '
SELECT *
FROM tblOperation
PIVOT(
    MAX(sno) FOR Operation IN ('+@cols+')
) AS pvt'

EXEC sp_executesql @sql

pivot运算符的语法如下所示:

 SELECT <non-pivoted column>,
        [first pivoted column] AS <column name>,
        [second pivoted column] AS <column name>,
        ...
        [last pivoted column] AS <column name>
    FROM
        (<SELECT query that produces the data>)
        AS <alias for the source query>
    PIVOT
    (
        <aggregation function>(<column being aggregated>)
    FOR
    [<column that contains the values that will become column headers>]
        IN ( [first pivoted column], [second pivoted column],
        ... [last pivoted column])
    ) AS <alias for the pivot table>
    <optional ORDER BY clause>;
SELECT,
[first pivoted column]作为,
[second pivoted column]作为,
...
[最后一个数据透视列]作为
从…起
()
作为
支点
(
()
对于
[]
在([第一个数据透视列],[第二个数据透视列],
…[最后一个数据透视列])
)作为
;

由于操作值的数量很大,因此可能需要使用动态SQL。Google“DynamicPivotQuerySQL”。可能重复您尝试过给出的任何答案吗?