Sql server 如何使用SQL server透视表?
我有一个表名叫tblOperation。我想将输出行转换为列 例如: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
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”。可能重复您尝试过给出的任何答案吗?