SQL Server数据库中,PIVOT在帮助中这样描述滴:可以使用 PIVOT 和UNPIVOT 关系运算符将表值表达式更改为另一个表。PIVOT 通过将表达式某一列中的***值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执行聚合。UNPIVOT 与 PIVOT 执行相反的操作,将表值表达式的列转换为列值。
创新互联是网站建设技术企业,为成都企业提供专业的成都网站建设、做网站,网站设计,网站制作,网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制适合企业的网站。十年品质,值得信赖!
测试用的数据及表结构:
- CREATE TABLE ShoppingCart(
- [Week] INT NOT NULL,
- [TotalPrice] DECIMAL DEFAULT(0) NOT NULL
- )
- INSERT INTO ShoppingCart([Week],[TotalPrice])
- SELECT 1,10 UNION ALL
- SELECT 2,20 UNION ALL
- SELECT 3,30 UNION ALL
- SELECT 4,40 UNION ALL
- SELECT 5,50 UNION ALL
- SELECT 6,60 UNION ALL
- SELECT 7,70
- SELECT * FROM ShoppingCart
输出结果:
来看下PIVOT怎么把行变列:
- SELECT 'TotalPrice' AS [Week],[1],[2],[3],[4],[5],[6],[7]
- FROM ShoppingCart PIVOT(SUM(TotalPrice) FOR [Week] IN([1],[2],[3],[4],[5],[6],[7])) AS T
输出结果:
可以看出来,转换完成了,就这么个功能。再看一个UNPIVOT函数,与上述功能相反,把列转成行。我们直接使用WITH关键字把上述PIVOT查询当成源表,然后再使用UNPIVOT关键把它旋转回原来的模样,SQL脚本及结果如下:
- WITH P AS (
- SELECT 'TotalPrice' AS [Week],[1],[2],[3],[4],[5],[6],[7]
- FROM ShoppingCart PIVOT(SUM(TotalPrice) FOR [Week] IN([1],[2],[3],[4],[5],[6],[7]))
- AS T
- )
- SELECT
- [WeekDay] AS [Week],
- [WeekPrice] AS [TotalPrice]
- FROM P
- UNPIVOT(
- [WeekPrice] FOR [WeekDay] IN([1],[2],[3],[4],[5],[6],[7])
- )AS FOO
关于SQL Server数据库PIVOT函数的使用的相关知识就介绍到这里了,希望本次的介绍能够对您有所收获!
网站栏目:SQLServer数据库PIVOT函数的使用详解
文章源于:http://www.shufengxianlan.com/qtweb/news9/484309.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联