• 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.
  • 相关阅读:
    详解 final 和 static
    详解 方法的覆盖 —— toString() 与 equals()的覆盖
    详解 继承(上)—— 工具的抽象与分层
    详解 继承(下)—— super关键字 与 多态
    Java 基础讲解
    矩阵 的实现
    C语言 贪吃蛇
    巨大数——三则运算(+、-、*)
    浅谈 循环数组
    人体对电流的反应
  • 原文地址:https://www.cnblogs.com/c546170667/p/7604568.html
Copyright © 2020-2023  润新知