zoukankan      html  css  js  c++  java
  • UNPIVOT

     
    UNPIVOT
    UNPIVOT则相反,把数据从列旋转到行
    SELECT  *
    INTO    product_vlues
    FROM    ( SELECT    NAME ,
                        YEAR(shijian) AS shijian ,
                        jiage
              FROM      dbo.product
            ) AS ov PIVOT ( SUM(ov.jiage) FOR ov.shijian IN ( [2005], [2006],
                                                              [2008] ) )AS p
                                                             
            SELECT * FROM product_vlues
    -------------------结果----------------
    -----查询视图用UNPIVOT----------------------------
                                                             
            SELECT * FROM product_vlues UNPIVOT(jiange FOR shijian IN ( [2005], [2006],
                                                              [2008] )) AS u
    -----结果----------------------------------------------
     
    ---------步骤分析---------------------------------------
    UNPIVOT涉及三个逻辑处理阶段
    1.U1:生成副本
    2.U2:提取元素
    3.U3:删除带有NULL的行
    UNPIVOT输入是左表表达式。
    第一步先为左表表达式中的行生成多个副本。要进行逆透视转换的每一列(在UNPIVOT运算符的In子句中出现的列名)都会生成一个副本。
    第二步从来源列中提出与行的当前副本所代表的逆透视转换元素相对应的值。保存的目标名称是FOR子句之前的指定的(本例中为Jiage)。这个目标列将保存虚拟表中与当前行的销售年份相对应的列值。
    第三步将删除掉结果值为NULL的行,返回虚拟表。
     

         Copyright © 2017 程英暾. All Rights Reserved.
  • 相关阅读:
    CAN Timing Sample Point
    宋体汉字字号和点阵大小对应关系
    有趣的心理测试——借船过河
    有源蜂鸣器与无源蜂鸣器的区别(转)
    VAG DMA protocol
    STM32 USB CAN 学习笔记
    STM32 CANBus RAM Layout
    LPC43XX JTAG Scan Chain
    Multiplexing SDIO Devices Using MAX II or CoolRunner-II CPLD
    LPC43xx SGPIO DMA and Interrupts
  • 原文地址:https://www.cnblogs.com/c546170667/p/7604568.html
Copyright © 2011-2022 走看看