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

matlab里面pivot函数,pivot 与 unpivot函数相关推荐

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

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

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

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

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

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

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

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

  5. Oracle基础梳理之pivot函数和unpivot函数-No6

    pivot函数和unpivot函数 首先建立测试用表及数据: CREATE TABLE ZZTEST( project VARCHAR(10), -- 课程 student VARCHAR(20), ...

  6. Oracle SQL 行转列,pivot函数和unpivot函数

    转:Oracle行转列,pivot函数和unpivot函数 - waynelo - 博客园 (cnblogs.com) pivot函数:行转列函数: 语法:pivot(任一聚合函数 for 需专列的值 ...

  7. oracle 总转横函数,详解Oracle行列转换函数-pivot函数和unpivot函数-多智时代

    今天主要介绍一下Oracle行转列及列转行常见函数,下面一起来看看吧! 行列转换 pivot函数:行转列函数 语法:pivot(任一聚合函数 for 需专列的值所在列名 in (需转为列名的值)): ...

  8. oracle pivot函数 后求和,Oracle行转列,pivot函数和unpivot函数

    pivot函数:行转列函数: 语法:pivot(任一聚合函数 for 需专列的值所在列名 in (需转为列名的值)): unpivot函数:列转行函数: 语法:unpivot(新增值所在列的列名 fo ...

  9. Oracle行转列,pivot函数和unpivot函数-配合动态sql很有用

    pivot函数:行转列函数: 语法:pivot(任一聚合函数 for 需专列的值所在列名 in (需转为列名的值)): unpivot函数:列转行函数: 语法:unpivot(新增值所在列的列名 fo ...

最新文章

  1. 分布式服务框架 dubbo/dubbox 入门示例
  2. (转)当别人努力的时候,你在做什么?
  3. 什么是Cookie对象,Session对象,Application对象等问题
  4. java函数调用约定_2020-09-04:函数调用约定了解么?
  5. sourcetree提示无效路径_关于今明可转债申购的温馨提示
  6. VGMP报文封装格式简介
  7. 学习OpenGL ES之法线贴图
  8. 火狐firebug和firepath插件安装
  9. VDN For PB Web实现消息推送
  10. Assembler messages error gcc and clang build
  11. javascript综合
  12. 腾讯QQ2004II Beta3火爆下载 可自定义头像
  13. 用js代码简单的介绍自己
  14. Python中*与**的几种用法
  15. 服务器端 P44、25-42
  16. 高性能mysql学习笔记--索引
  17. ddr2是几代内存_DDR1 DDR2 DDR3内存条有什么区别?怎么区分?
  18. 算法笔记——【分治法】线性时间选择
  19. vue 高德地图 定位插件 地图实例插件 获取点击的地方的经纬度和具体地址
  20. discuz克米设计app模板V3.5破解版,查找好友修复文件

热门文章

  1. scala 系列 ---- take,takeRight,takeWhile的使用详解用法及代码示例
  2. parentNode,parentElement,childNodes,children最经典讲解
  3. 爬虫小案例-爬取当当网TOP500的图书并将数据存入数据库
  4. zlkw什么意思_kw是什么计量单位
  5. 【计算机网络】vlan划分实验-华为ENSP
  6. 为何AI创业者在此集结?火山引擎X锦秋基金511神秘计划曝光
  7. 什么软件可以去除照片水印?这3种方法可以帮你轻松搞定
  8. javascript--爱奇艺网站首页(轮播图)
  9. 软考备考成功经验分享
  10. C语言的这个小知识点,竟然连开发多年的老司机都了解的不完全