SQL 2005中pivot and unpivot的用法

系统 1936 0
.Pivot 的用法体会 :
语句范例 :
select PN,[2006/5/30] as [20060530],[2006/6/2] as [20060602] 结构 Consumptiondata (PN,M_Date,M_qty)
order by PN 可要可不要 , 并不重要 , 只是排序的作用
 
关键的是红色部分 , 解析如下 ,select  大家都知道 ,PN ConsumptionData 表中的一个 Column,
[2006/5/30] 也是一个 Column, 他需要显示成 [20060530], 注意 [2006/5/30] 不是一个 Value, 而是一个 Column.[2006/6/2] [2006/5/30] 一样 .
Pivot ( ........... ) as PVT 这个结构是固定格式 , 没有什么需要特殊说明的 , 当然 PVT 随便你给他一个 NICKNAME ,it doesn't make any differences.
sum(a.M_qty) 是我们希望显示出来的值 , 注意这个地方必须用汇总函数 , 否则语法不会过 .
FOR a.M_date in ([2006/5/30],[2006/6/2]) 表示汇总的值要显示在哪一个 Column 下面
如果我们想让 Sum(M_qty) 显示在 PN 转换的 Column 下面 , 则可写为 For PN, in 的清单表示我们关注哪些要查看的 Column, 注意再次强调是 Column, 不是 Value. in 的清单是 Column 清单 , 不是 Value 清单 , M_date Value 转换成的 Column 清单 .
 
2.UnPivot
-- 此段可以直接在 Sql 2005 中执行
CREATE TABLE pvt (VendorID int, Emp1 int, Emp2 int,
Emp3 int, Emp4 int, Emp5 int)
GO
INSERT INTO pvt VALUES (1,4,3,5,4,4)
INSERT INTO pvt VALUES (2,4,1,5,5,5)
INSERT INTO pvt VALUES (3,4,3,5,4,4)
INSERT INTO pvt VALUES (4,4,2,5,5,4)
INSERT INTO pvt VALUES (5,5,1,5,5,5)
GO
--select * from PVT
--Unpivot the table.
SELECT VendorID, Employee, Orders
FROM PVT
UNPIVOT (
 Orders FOR Employee IN ([Emp1], [Emp2], [Emp3], [Emp4], [Emp5])
)AS unpvt
GO
 
说明 : Employee Column [Emp1]... 为值 , Orders Column [Emp1]... 的值为值
for

from consumptiondata a
Pivot (sum(a.M_qty) FOR a.M_date in ([2006/5/30],[2006/6/2])) as PVT  
order by PN
 
Table

SQL 2005中pivot and unpivot的用法


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论