首页 > 数据库技术 > 详细

Sql Server中不常用的表运算符之UNPIVOT

时间:2014-04-07 08:21:46      阅读:516      评论:0      收藏:0      [点我收藏+]

Sql Server中不常用的表运算符之PIVOT中,介绍了PIVOT表运算符,现在来说说与之相对应的另一个表运算符UNPIVOT。

从名字可以看出,这个运算符的作用与PIVOT刚好相反,是将一行的多个列值旋转为多行,每一行是一个原列的值。

Sql Server中不常用的表运算符之PIVOT中最后的表结果为例,来演示一下如何使用UNPIVOT运算符

bubuko.com,布布扣

上面这张表中显示了 C001,C002,C003这三个消费者在不同城市不同地区的订单数量,通过下面的查询将C001,C002,C003这三列旋转为行。

bubuko.com,布布扣
SELECT * FROM Ptable
    UNPIVOT(
        num_orders FOR 
            Customer IN (
                C001,
                C002,
                C003
            )
        ) AS U
bubuko.com,布布扣

结果如下:

bubuko.com,布布扣

而UNPIVOT也将通过3个步骤完成

1.获取副本:

这一步原表中的每一行将为IN中对应的每一列复制一次原,因为IN中有三列,所以每一行都将被复制三次。并且最后的副本还会包含一个新列num_orders,对应IN中每一列的订单数。最后的副本表如下

bubuko.com,布布扣

2.第二步:

隔离目标列值,将保留与num_orders对应的列值,并将其他的列值去掉。最后的列值保留在num_orders中。

bubuko.com,布布扣

3.第三步:

过滤掉结果列num_orders为NULL的值,因为第二步的表中num_orders列没有NULL值,所以第二步将是最后的结果。

 

 

Sql Server中不常用的表运算符之UNPIVOT,布布扣,bubuko.com

Sql Server中不常用的表运算符之UNPIVOT

原文:http://www.cnblogs.com/iiaijimaai/p/3648979.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!