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
  • 相关阅读:
    C# 根据Word模版生成Word文件
    C# 添加事件
    类HTML语法显示格式化文本
    简易内存池实现
    12306订票助手
    网站前端的收藏
    摘抄 ander图片上传
    对于文件上传的几种处理方法,转载的
    对于 asp.net 中IhttpHandle,和IHttpModel中使用Session 会话
    KindEdit 的编辑插件的提问家
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/1988445.html
Copyright © 2011-2022 走看看