如果是家电销售员,那么可能需要统计每月日销售的彩电、冰箱、空调...最大值、最小值、平均值等

如果你是耳鼻喉科医生,那么可能需要统计月度年度日接客咽炎、喉炎、鼻炎...最大值、最小值、平均值等

如果你是程序媛,那么可能需要统计月度日处理bug、新增功能、支援...等类别问题量的最大值、最小值、平均值等

那么诸如此类问题,需要一行显示一人负责所有相关类别数值时,就是pivot派上用场之时

这类数据结构一般为

create table objecttable(id int primary key identity(1,1),userno varchar(10),calendar date,type varchar(20),num int)

目标输出数据结构

userno type num calendar

---------- ---------- -----------

userA 类别1 1      date1

userB 类别2 3  date2

userC 类别3 5  date3

select userno,max(num) maxnum,type,convert(varchar(7),calendar,120) monthly

into #

from objecttable group by userno,convert(varchar(7),calendar,120),type

select  * from # pivot(max(maxnum) for type in(类别1,类别2,类别3)) x

userno   monthly   类别1   类别2   类别3

-----------------------------------------------------------
userA    2016-06   10     11      15
userB    2016-06   6       3     8
userC    2016-06   9       2     7

附PIVOT语法

SELECT * FROM TB PIVOT(聚合函数(列) FOR 列 in (…) ) tt

UNPIVOT相反操作

select  * into #rlst from # pivot(max(maxnum) for type in(类别1,类别2,类别3)) x

select userno,monthly,type,num from #rlst unpivot(num for type in([类别1],[类别2],[类别3]))xx

完整语法:

select f1,f2,typename,num fom tb

UNPIVOT(

value_column

FOR pivot_column

IN(<column_list>)

)

PIVOT&UNPIVOT的更多相关文章

  1. SQL Server中行列转换 Pivot UnPivot

    SQL Server中行列转换 Pivot UnPivot PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PI ...

  2. sql server 行转列 Pivot UnPivot

    SQL Server中行列转换 Pivot UnPivot 本文转自:张志涛 原文地址: http://www.cnblogs.com/zhangzt/archive/2010/07/29/17878 ...

  3. sql server pivot/unpivot 行列互转

    有时候会碰到行转列的需求(也就是将列的值作为列名称),通常我都是用 CASE END + 聚合函数来实现的. 如下: declare @t table (StudentName nvarchar(20 ...

  4. Ms sql pivot unpivot

    --建表 create table dbo.orders ( orderid int not null primary key nonclustered, orderdate datetime not ...

  5. sql:pivot unpivot

    pivot  行转列 unpivot  列转行 源码跑步起来 这是能跑起来的 源码转自 http://www.cnblogs.com/zhangzt/archive/2010/07/29/178782 ...

  6. 多列的行列转换(PIVOT,UNPIVOT)

    形式1 形式2 形式3 有时候可能会有这样的需求: 将一张表的所有列名转做为数据的一列数据,将一列数据作为整张表的列名 当列比较多时,只用PIVOT是解决不了的,经过研究,需要将UNPIVOT 和 P ...

  7. SQL 行转列 列转行 PIVOT UNPIVOT

    1.基础表 2.行转列,注意ISNULL函数的使用,在总成绩的统计中,ISNULL(-,0) 有必要使用 3.列转行,对列语文.数学.英语.政治,进行列转行,转为了2列,score scname 这两 ...

  8. SQL Fundamentals: 子查询 || 行列转换(PIVOT,UNPIVOT,DECODE),设置数据层次(LEVEL...CONNECT BY)

    SQL Fundamentals || Oracle SQL语言 子查询(基础) 1.认识子查询 2.WHERE子句中使用子查询 3.在HAVING子句中使用子查询 4.在FROM子句中使用子查询 5 ...

  9. SQL Server中行列转换 Pivot UnPivot

    PIVOT用于将列值旋转为列名(即行转列),在SQLServer 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVOT(聚合函数(列)FOR 列 in (-) )AS P 完 ...

随机推荐

  1. Xamarin Anroid开发教程之Anroid开发工具及应用介绍

    Xamarin Anroid开发教程之Anroid开发工具及应用介绍 Xamarin开发Anroid应用介绍 如今智能手机已经盛行了好几年,而针对这些智能手机的软件开发也变得异常火热.但是在Andro ...

  2. http://jingyan.baidu.com/article/d169e186aa8728436611d8f3.html

    http://jingyan.baidu.com/article/d169e186aa8728436611d8f3.html

  3. BZOJ1111 : [POI2007]四进制的天平Wag

    POI2007完结撒花~ 首先将n转化为四进制,从低位到高位DP f[i]表示这一位不向下一位借位 g[i]表示这一位向下一位借位,但借的那个不算在i f[0]=0,g[0]=inf f[i]=mer ...

  4. 最近公共祖先(lca)

    囧啊囧. lca的求法太多了 倍增,tarjan,st,lct,hld.... 后边三个我就不写了,其中st我没写过,估计用不上,在线用倍增,离线用tarjan就行了. 嗯. 第一种,倍增(O(nlo ...

  5. 基于nginx tomcat redis分布式web应用的session共享配置

    一.前言 nginx 作为目前最流行的开源反向代理HTTP Server,用于实现资源缓存.web server负载均衡等功能,由于其轻量级.高性能.高可靠等特点在互联网项目中有着非常普遍的应用,相关 ...

  6. 解决Apache CXF 不支持传递java.sql.Timestamp和java.util.HashMap类型问题

    在项目中使用Apache开源的Services Framework CXF来发布WebService,CXF能够很简洁与Spring Framework 集成在一起,在发布WebService的过程中 ...

  7. loadView、viewDidLoad及viewDidUnload的关系

      标题中所说的3个方法,都是UIViewController的方法,跟UIViewController的view属性的生命周期息息相关.接下来我会一一阐述它们的作用以及它们之间的联系. loadVi ...

  8. getattr的作用是什么呢

    在python的官方文档中:getattr()的解释如下:getattr(object, name[, default]) Return the value of the named attribut ...

  9. myeclipse10 将一个java工程合并到web工程

    参考:zhaoshijie http://zhaoshijie.iteye.com/blog/ baidu: http://zhidao.baidu.com/link?url=WXr-EgI0OyUs ...

  10. Laptop Issue Letter (读取Excel中指定内容,然后生成新的Excel文件)

    $xl = New-Object -ComObject "Excel.Application" $cmdbwb = $xl.Workbooks.Open("F:\Ivan ...