最近发现之前在学校学习的sql语句好像基本没啥技术含量
最近发现SqlServer中提供的一个关键字居然从来没用过


select (p.LastName + ', ' + p.FirstName) FullName,
MONTH(sh.OrderDate) Month,
count(SalesOrderID) TotalOrder
from Sales.SalesOrderHeader sh
join Person.Person p
on sh.SalesPersonID = p.BusinessEntityID
where month(OrderDate) between 1 and 5
group by p.LastName + ', ' + p.FirstName, MONTH(sh.OrderDate)
order by FullName;


先不管他这组数据具体要干啥
首先需要明白 group by 和 PIVOT 都具有分组功能,两者似乎只能选择其中之一

这里是按照名字和月份分组
下面使用povot进行分组

 select FullName ,[1] as Jan,[2] as Feb,[3] as Mar,[4] as Apr,[5] as May from (select  (p.LastName + ', ' + p.FirstName) FullName,MONTH(sh.OrderDate) Month ,
SalesOrderID
from Sales.SalesOrderHeader sh
join Person.Person p
on sh.SalesPersonID = p.BusinessEntityID
where month(OrderDate) between 1 and 5 ) c
PIVOT(count(SalesOrderID) FOR Month  IN([1],[2],[3],[4],[5]))
AS T


这里显然是将
count(SalesOrderID) FOR Month IN([1],[2],[3],[4],[5])
将计算好的count数据进行按for后面的月份分组
比如
一月份多少多少
二月份多少多少
听其他博主说了一堆,把注意力全都集中在转列上,这个明明是分组,只是换了一种方式,不然要你在前面写个聚合函数干啥,这里就可以看出是根据销售数量按月分组
再比如下面这道题

select CustomerID, year(OrderDate) Year, sum(sd.OrderQty) TotalPurchaseQuantity
from Sales.SalesOrderHeader sh
join sales.SalesOrderDetail sd
on sh.SalesOrderID = sd.SalesOrderID
where CustomerID between 18010 and 18014
group by CustomerID, year(OrderDate)
order by year;

需要我们将这个格式的输出装换为下面这个格式


select year, isnull([18010],0) as[18010] ,isnull([18011],0) as [18011],isnull([18014],0) as [18014],isnull([18012],0) as [18012],isnull([18013],0)as [18013] from (
select CustomerID,
year(OrderDate) Year,
OrderQty
from Sales.SalesOrderHeader sh
join sales.SalesOrderDetail sd
on sh.SalesOrderID = sd.SalesOrderID
where CustomerID between 18010 and 18014
) as c
pivot (sum(OrderQty) for CustomerID in  ([18010],[18011],[18014],[18012],[18013]) ) s

所以在此证明这就是个分组排序而已

pivot的用法,一看就会相关推荐

  1. 行转列:SQL SERVER PIVOT与用法解释

    在数据库操作中,有些时候我们遇到需要实现"行转列"的需求,例如一下的表为某店铺的一周收入情况表: WEEK_INCOME(WEEK VARCHAR(10),INCOME DECIM ...

  2. Lockup latch的用法,看这个就够了

    Lockup latch的用法,看这个就够了! 文章右侧广告为官方硬广告,与吾爱IC社区无关,用户勿点.点击进去后出现任何损失与社区无关. 本公众号秉承 "越分享越有价值,越分享越幸运&qu ...

  3. oracle中pivot的用法,oracle中pivot的实现原理和用法

    考试大Oracle站整理: 1. 11g之前的行列转换面试 领袖又说了:"温故而知新".那就让咱们先看看11g之前是怎么实现地.行列转换一直看成甄别老手和新手的试金石,面试的时候面 ...

  4. SQL中PIVOT的用法

    PIVOT 提供的语法比一系列复杂的 SELECT-CASE 语句中所指定的语法更简单和更具可读性. 以下是带批注的 PIVOT 语法: SELECT <非透视的列>,[第一个透视的列] ...

  5. ppt中的面积显示图表中有数据被盖住了显示不出来_关于PPT图表的用法,看这一篇就够了...

    来了,来了,它来了, 图表教程会迟到,但永远不会缺席! 在一个月前,我们联系到公众号PK阿锴主理人王培锴, 经过双方反复的推敲,终于完成了这篇PPT图表秘笈. 希望这篇文章能给你一些小小启发, 文末有 ...

  6. oracle pivot使用方法,Oracle Pivot简单用法

    因为工作中经常需要excel或者报表输出,了解到pivot函数,查了部分资料,实在不够详尽,便想自己写一篇.pivot了解不深,只写写简单用法. table t{ c1,c2,c3,c4 } 有库表t ...

  7. bootstrapwizard 参数_bootstrapWizard 这个插件古怪的用法,看不懂求解?

    问题描述 找了一个老外写的关于bootstrapWizard的向导插件代码,他这个用法看不懂,一脸懵逼.百度别人写的都能看懂,他这个用法,怎么理解运行原理.求大神解答一下. 问题出现的环境背景及自己尝 ...

  8. java和python可以在一个项目中同时使用么-java调用python的几种用法(看这篇就够了)...

    java调用python的几种用法如下: 在java类中直接执行python语句 在java类中直接调用本地python脚本 使用Runtime.getRuntime()执行python脚本文件(推荐 ...

  9. 金蝶kis商贸采购单商品代码_金蝶大包装小包装多单位计量单位换算关系用法,看了这个秒懂...

    本期视频介绍金蝶大包装,小包装单位的使用,也就是计量单位,以及盘点机PDA上的多单位操作技巧. 我们以牛奶,1箱20瓶为例,大单位是"箱",小单位是"瓶" 第一 ...

最新文章

  1. 分隔百度百科中的名人信息与非名人信息
  2. python opencv resize函数_Python OpenCV中的resize()函数的使用
  3. php 操作权限,liunx下PHP操作权限文件
  4. Hadoop报错:All specified directories are failed to load.
  5. proxomitron 个人代理工具
  6. 因为一个字符校对问题,我的大厂面试挂了
  7. 【ES】Es使用 报错 TransportClient llegalstateException : Unsupported transport.type [netty3]
  8. 聚类算法之划分方法(k-means)
  9. Excel做题记录——整数规划优化模型
  10. 电视家鸿蒙系统,ZNDS智能电视强烈推荐:机顶盒上好用的四款软件!
  11. 达观数据助力浙江大华构建企业级知识搜索共享平台,盘活沉淀数据
  12. 记录一次Stack上关于数学之美的brainstorm
  13. QThread: Destroyed while thread is still running的处理方法
  14. 网上收集的一些Java应用 选择自 yukikaze 的 Blog
  15. 【无标题】输入圆锥体半径r以及高度h,并计算它的体积。
  16. 为什么实体类要实现serializable接口序列化
  17. 【词库管理】新词提取小工具
  18. 静态网页爬取-Requests
  19. Jenkins部署maven项目找不到jar包解决
  20. 浅谈企业文化的重要性,搭档之家有话说

热门文章

  1. Chrome谷歌浏览器开发者工具调试:如何检查鼠标点击才显示失焦就隐藏的元素dom
  2. Django框架(十一):用户认证组件
  3. onReceive Android
  4. 天文学家发现宇宙中最大的旋转体
  5. 使用MoveIt!控制Gazebo仿真环境中的UR 10机械臂
  6. pdfoa-pdf转换成word转换器免费版工具
  7. 一条龙搭建短视频去水印小程序,支持图集解析
  8. 标准库滴答定时器的用法
  9. playbook使用
  10. Java学习笔记09从认识多态开始