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

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

如果你是程序媛,那么可能需要统计月度日处理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. HealthKit开发教程之HealthKit的复合数据

    HealthKit开发教程之HealthKit的复合数据 复合数据就是复合单位和值构成的数据.所谓复合单位就是由单位进行乘法.除法等得到的单位,如m/s.lb·ft等就是复合单位.本节将针对这些复合数 ...

  2. HDU 5087 (线性DP+次大LIS)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5087 题目大意:求次大LIS的长度.注意两个长度相同的LIS大小比较,下标和大的LIS较大. 解题思 ...

  3. 【wikioi】1116 四色问题

    题目链接 算法:DFS 刚开始卡了一下,但后面想了想,于是 放上代码: #include <iostream> using namespace std; bool map[9][9]; i ...

  4. java使用siger 获取服务器硬件信息(CPU 内存 网络 io等)

    通过使用第三方开源jar包sigar.jar我们可以获得本地的信息 1.下载sigar.jar sigar官方主页 sigar-1.6.4.zip 2.按照主页上的说明解压包后将相应的文件copy到j ...

  5. filter:alpha(opacity=100,style=1)

    filter:alpha(opacity=100,style=1) 1.opacity属性:设置透明度,取值0至100之间的任意数值,100表示完全不透明: 2.style属性:设置渐变风格: 0表示 ...

  6. php如何把文件上传到服务器上

    conn.php: <?php $id=mysql_connect('localhost','root','root'); mysql_select_db("db_database12 ...

  7. Leetcode | Work Break I & II

    Work Break I Given a string s and a dictionary of words dict, determine if s can be segmented into a ...

  8. HP StorageWorks MSL2024 Tape Libraries - Tape library Error Codes

    Main error codes Error Code Description Details and Solution 80 Can not initialize bar code reader P ...

  9. fail2ban 保护

    Fail2ban是一款非常使用的软件,它能够监控系统日志,能够有效的防止ssh被暴力破解,下面小编将针对Fail2ban在Linux下的安装和使用给大家做个介绍,一起来了解下吧. https://gi ...

  10. HDU 4825 Xor Sum(经典01字典树+贪心)

    Xor Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others) Total ...