pivot 与 unpivot 函数是SQL05新提供的2个函数  

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

pivot函数:

create table test(id int,name varchar(20),quarter int,profile int)
insert into test values(1,'a',1,1000)
insert into test values(1,'a',2,2000)
insert into test values(1,'a',3,4000)
insert into test values(1,'a',4,5000)
insert into test values(2,'b',1,3000)
insert into test values(2,'b',2,3500)
insert into test values(2,'b',3,4200)
insert into test values(2,'b',4,5500)

select * from test    --创建表test

现在需要把quarter 从1列数据变成4列数据  效果如:

把一列拆成几列这时候就能使用pivot函数很简单的实现

select * from test
pivot
(
 sum([profile]) for [quarter]
 in
 ([1],[2],[3],[4])
)
as
s

注:使用pivot把一列拆成几列时 需要后面as取个别名 这是固定的格式 同时如 for前是必须使用聚合函数的

当然不使用pivot函数也可以得到相同效果 只是代码长切效率低 但容易理解

select id,[name],
'1'=(select sum([profile]) from test where id=a.id and quarter=1),
'2'=(select sum([profile]) from test where id=a.id and quarter=2),
'3'=(select sum([profile]) from test where id=a.id and quarter=3),
'4'=(select sum([profile]) from test where id=a.id and quarter=4)
from test as a
group by id,name

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

unpivot函数 顾名思义 他就是把几列合并到1列中去

create table test1(id int,name varchar(20), Q1 int, Q2 int, Q3 int, Q4 int)

insert into test1 values(1,'a',1000,2000,4000,5000)
insert into test1 values(2,'b',3000,3500,4200,5500)

select * from test1 --创建test1表

我们要把Q1 Q2 Q3 Q4合到1列 季度列中去 如效果:

使用unpivot可以很简单的实现

select id ,[name],[jidu],[xiaoshou] from test1
unpivot
(
 xiaoshou for jidu in
 ([q1],[q2],[q3],[q4])
)
as f

注:同样需要使用as取别名同样是固定的格式 unpivot函数中没有聚合函数 xiaoshou和jidu列都是原来没有的 jidu表由原来的Q1 Q2 Q3 Q4组成 

同样的不使用unpivot也可以实现以上的功能

select id,[name],
jidu='Q1',
xiaoshou=(select Q1 from test1 where id=a.id)
from test1 as a
union
select id,[name],
jidu='Q2',
xiaoshou=(select Q2 from test1 where id=a.id)
from test1 as a
union
select id,[name],
jidu='Q3',
xiaoshou=(select Q3 from test1 where id=a.id)
from test1 as a
union
select id,[name],
jidu='Q4',
xiaoshou=(select Q4 from test1 where id=a.id)
from test1 as a

转载于:https://www.cnblogs.com/sukhoi/p/7434882.html

pivot 与 unpivot 函数是SQL05新提供的2个函数相关推荐

  1. matlab里面pivot函数,pivot 与 unpivot函数

    pivot 与 unpivot 函数是SQL05新提供的2个函数 灰常灰常的实用 ----------------------------------------------------------- ...

  2. SQL 行转列 列转行 Oracle转置函数函数pivot、unpivot 解决wm_concat 没有排序

    https://www.cnblogs.com/mellowsmile/p/4642306.html HH 终风且暴,顾我则笑,谑浪笑敖,中心是悼. 终风且霾,惠然肯来,莫往莫来,悠悠我思. 博客园 ...

  3. oracle非常量不能用于privot_Oracle 行列转换函数pivot、unpivot的使用(二)

    一.行转列pivot 关键函数pivot,其用法如下 pivot(聚合函数 for 列名 in(类型)) select * from table_name pivot(max(column_name) ...

  4. 经常用到的透视函数(行转列列转行)函数 PIVOT()UNPIVOT

    说明: 工作中经常遇到一组or一条数据按照不同类型被分成多条数据,如 一条合同的分期还款账单按照不同类型被分成本金,利息,管理费等, 数据统计工作中,一条合同一期就会分成多条合同 如 实际工作中 常需 ...

  5. Pivot 和 Unpivot

    Pivot 和 Unpivot 使用简单的 SQL 以电子表格类型的交叉表报表显示任何关系表中的信息,并将交叉表中的所有数据存储到关系表中. Pivot 如您所知,关系表是表格化的,即,它们以列-值对 ...

  6. oracle unpivot 索引_oracle 11g中的pivot和unpivot转换操作

    对于pivot和unpivot这个Oracle 11g的新功能一直就想总结一下,正好赶上论坛中有很多人会提问相关的问题,于是利用空闲时间翻译了一篇相关的网络文章.链接如下: ITPuber:Luise ...

  7. SQL Server 2008中的Pivot和UnPivot

    SQL Server 2008中SQL应用系列--目录索引 今天给新成员讲解PIVOT 和 UNPIVOT示例,顺便整理了一下其用法.这是自SQL Server 2005起提供的新功能. 官方示例:h ...

  8. pivot unpivot_静态和动态SQL Pivot和Unpivot关系运算符概述

    pivot unpivot In this article, we'll walk-through the SQL Pivot and SQL Unpivot operators and how th ...

  9. 表横竖转换(行列转换)PIVOT 和 UNPIVOT 用法

    可以使用 PIVOT 和 UNPIVOT 关系运算符将表值表达式更改为另一个表.PIVOT 通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执 ...

最新文章

  1. pytorch BiLSTM+CRF代码详解 重点
  2. cmd命令启动mysql服务
  3. Python 处理字符串内置函数详解
  4. 第十周软件工程作业-每周例行报告
  5. CreateThread和_beginthreadex的区别
  6. python实现一个小程序
  7. Eclipse 中 SVN 的设置。
  8. 前端必须掌握30个CSS3选择器
  9. Combiner合并的使用案例
  10. 设置EntityFramework中decimal类型数据精度
  11. CTP2交易所成交回报
  12. 牛腩新闻发布系统-发布
  13. css3仿手机版淘宝商品并列显示
  14. 贪吃蛇速度变快c语言程序,简单贪吃蛇C语言程序
  15. 蜂鸣器发声程序c语言,基于51单片机蜂鸣器发声的C语言程序
  16. 塔菲克蓝牙适配器驱动_TAFIQ蓝牙适配器驱动下载|TAFIQ蓝牙适配器驱动 v4.0 最新免费版 下载 - 巴士下载站...
  17. vivo Z1的USB调试模式在哪里,打开vivo Z1USB调试模式的经验
  18. 苹果亮度自动调节怎么关闭_Android 亮度自动调节是如何实现的?
  19. 二极管压降随电流的变化
  20. Tomcat安装配置及CATALINA_HOME environment variable is not defined correctly问题的解决

热门文章

  1. 40无法u盘启动_戴尔主板bios设置u盘启动 戴尔台式电脑如何bios设置U盘启动教程...
  2. springboot redis token_Spring Boot + Redis + 注解 + 拦截器来实现接口幂等性校验
  3. python聚类分析成绩反思_机器学习python实践——二分K-means聚类
  4. LeetCode 1290 二进制链表转整数
  5. C语言多文件编程基本格式
  6. java反向映射_opencv 直方图和直方图反向映射
  7. Java并发编程实战_阿里P9整理分享的亿级流量Java高并发与网络编程实战PDF
  8. 管道在c语言中的作用,在C中实现管道
  9. matlab多径信道模型,基于matlab的无线多径信道建模与仿真分析
  10. 案例 github_github 项目搜索技巧-让你更高效精准地搜索项目