zoukankan      html  css  js  c++  java
  • SQL 2005中pivot and unpivot的用法

    .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_dateValue转换成的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]...为值, OrdersColumn [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
  • 相关阅读:
    Python之模块
    Python之request模块-基础用法
    Linux小知识点
    python之pip安装软件包常用命令
    windows设置多个JDK环境
    window配合虚拟机VMware搭建虚拟ubuntu服务器入坑集锦
    Linux服务器相关信息查询
    达梦数据库
    创业公司如何快速构建高效的监控系统?
    干货分享:智慧工厂时代下大数据 + 智能的深度实践
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/1988445.html
Copyright © 2011-2022 走看看