请教SQL server 中pivot的详细用法及语法规则

请教SQL server 中pivot的详细用法及语法规则,第1张

SQL server 中使用 PIVOT关系运算符将表值表达式更改为另一个表。PIVOT 通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执行聚合。

PIVOT 语法为SELECT <非透视的列>, [第一个透视的列],...[最后一个透视的列] FROM (<生成数据的 SELECT 查询>)  PIVOT (<聚合函数>(<要聚合的列>) FOR [<包含要成为列标题的值的列>] IN ( [第一个透视的列],... [最后一个透视的列]) ) AS <透视表的别名><可选的 ORDER BY 子句>。

扩展资料:

由于SQL Server 2005有了新的PIVOT运算符,就不再需要CASE语句和GROUP BY语句了。(每个PIVOT查询都涉及某种类型的聚合,因此可以忽略GROUP BY语句。)PIVOT运算符能够利用CASE语句查询实现相同的功能,但是可以用更少的代码就实现,而且看起来更漂亮。

PIVOT运算符前面接的一定是一条查询语句。 有与PIVOT 执行相反的运算符UNPIVOT,将表值表达式的列转换为列值。相比于直接通过union来实现列转行,使用UNPIVOT可以让sql语句变得更加简洁。相对而言,理解难度会上升,可读性下降。

PIVOT用于将列值旋转为列名(即行转列),在SQLServer2000可以用聚合函数配合CASE语句实现PIVOT的一般语法是:PIVOT(聚合函数(列)FOR列in(…))ASP完整语法:table_sourcePIVOT(聚合函数(value_column)FORpivot_columnIN())UNPIVOT用于将列明转为列值(即列转行),在SQLServer2000可以用UNION来实现完整语法:table_sourceUNPIVOT(value_columnFORpivot_columnIN())注意:PIVOT、UNPIVOT是SQLServer2005的语法,使用需修改数据库兼容级别在数据库属性->选项->兼容级别改为90具体实例地址我私信发给你


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6693344.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存