视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
SQL关于pivot
2020-11-09 10:08:31 责编:小采
文档


SQL 关于pivot 解释: PIVOT 通过将表达式某一列中的唯一值转换为输出中的多个列来转换表值表达式,并在必要时对最终输出中所需的任何其余的列值执行聚合。 还是通过实例来了解用法和作用: , city -- 所在城市 ): . ( ( 5 ) COLLATE Chinese_PRC_CI_AS N

SQL 关于pivot

解释: PIVOT 通过将表达式某一列中的唯一值转换为输出中的多个列来转换表值表达式,并在必要时对最终输出中所需的任何其余的列值执行聚合。

还是通过实例来了解用法和作用:

,美国空间, city -- 所在城市):

.( (5) COLLATE Chinese_PRC_CI_AS NOT NULL, (10) COLLATE Chinese_PRC_CI_AS NOT NULL, ( ) )

向表一插入数据:

,); ,); ,); ,);

查询所插入的数据:

dbo.Customer

结果如图:

再建表二([dbo].[Orders] 字段说明:orderid -- 订单id , customerid -- 消费者id):

.( , (5) COLLATE Chinese_PRC_CI_AS NULL, ( ) )

向表二插入数据:

); ); ); ); ); ); insert into dbo.Orders values(7,null);

查询插入的数据:

dbo.orders

结果如图:

操作:

在了解PIVOT之前先看这一个题目:

题目1:每个所在城市的消费者的订单情况(请用“没有订单”,“小于两个订单”,“超过两个订单”)Sql语句如下:

, city , (orderid) (orderid) (orderid) dbo.Customers dbo.Orders as o on c.customerid = o.customerid group by c.customerid,city

结果如图:

这个很容易理解不作详解

再引入题目2:每个城市的每种订单情况(请用“没有订单”,“小于两个订单”,美国服务器,“超过两个订单”)的数

方法一:用普通的sql语句进行写:

消费者 , 消费者 , 消费者 ( , city , (orderid) (orderid) (orderid) dbo.Customers dbo.Orders as o on c.customerid = o.customerid group by c.customerid,city ) as d group by 所在城市

结果如图:

方法二:用pivot看它的神奇之处:

select 所在城市,没有订单,小于两个订单,超过两个订单 from ( , city , (orderid) (orderid) (orderid) dbo.Customers dbo.Orders as o on c.customerid = o.customerid group by c.customerid,city ) as d pivot(count(消费者) for 种类 in (没有订单,小于两个订单,超过两个订单)) as p

结果如图:

分析(在看分析时请结合方法一,便于理解):

在看方法二的sql语句可以发现pivot把d的两列(消费者,种类 )作为输入参数,美国空间,而没有作为输入参数(所在城市 )的列作了一个隐式的分组(相当于方法一最后的:group by 所在城市 ),其次它又对 in 子句作了如下操作sql操作:

消费者 end, 消费者 end, 消费者 end

最后对每个case表达式作指定聚合函数sql代码如下:

消费者 , 消费者 , 消费者

好了通过结合方法一与方法二 就应该能够理解pivot的用法了!

下载本文
显示全文
专题