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.
  • 相关阅读:
    topcoder srm 320 div1
    topcoder srm 325 div1
    topcoder srm 330 div1
    topcoder srm 335 div1
    topcoder srm 340 div1
    topcoder srm 300 div1
    topcoder srm 305 div1
    topcoder srm 310 div1
    topcoder srm 315 div1
    如何统计iOS产品不同渠道的下载量?
  • 原文地址:https://www.cnblogs.com/c546170667/p/7604568.html
Copyright © 2011-2022 走看看