SQL Server数据库PIVOT函数的使用详解(一)
http://database.51cto.com/art/201108/285250.htm
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函数的使用的相关知识就介绍到这里了,希望本次的介绍能够对您有所收获!
这些是静态的行转列,动态的行转列将在下一节。
分类:
sql
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix