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.
  • 相关阅读:
    杰我教育-新老学员交流会
    来杰我学IT,好就业
    怎么创建maven项目
    项目开发生命周期
    2015年12月28日,我工作了
    SSH架构图及各部分知识点
    jsp基础大全
    网站创建过程(二)
    网站创建过程(一)
    python+Django+mysql环境搭建
  • 原文地址:https://www.cnblogs.com/c546170667/p/7604568.html
Copyright © 2011-2022 走看看