CREATE TABLE CC
(Student NVARCHAR2(2),Course NVARCHAR2(2),Score INT
);

INSERT into CC
select N'张三',N'语文',78 from dual union all
select N'张三',N'数学',87 from dual union all
select N'张三',N'英语',82 from dual union all
select N'张三',N'物理',90 from dual union all
select N'李四',N'语文',65 from dual union all
select N'李四',N'数学',77 from dual union all
select N'李四',N'英语',65 from dual union all
select N'李四',N'物理',85 from dual ;
commit;

/*
--希望看到查询結果:
李四 77 85 65 65 292
张三 87 90 82 78 337
*/
---1 decode 方法
SELECT
student,
MAX(DECODE(COURSE, '语文', SCORE)) A,
MAX(DECODE(COURSE, '数学', SCORE)) B,
MAX(DECODE(COURSE, '英语', SCORE)) C,
MAX(DECODE(COURSE, '物理', SCORE)) D,
SUM(SCORE) TOTAL
FROM
CC
GROUP BY
student;

--2 使用wm_concat方法
SELECT STUDENT,WM_CONCAT(SCORE),SUM(SCORE) FROM CC GROUP BY STUDENT;
--3 使用Oracle 11g pivot方法
SELECT KIN.*, KIN.a + KIN.b + KIN.c + KIN.d AS TOTAL
FROM (SELECT *
FROM CC PIVOT(MAX(SCORE) FOR COURSE IN('语文' AS A,
'数学' AS B,
'英语' AS C,
'物理' AS D))) KIN;

转自:http://blog.csdn.net/jxzkin/article/details/7949629

Oracle 行转列(pivot、wm_concat、decode)使用总结的更多相关文章

  1. Oracle 行转列pivot 、列转行unpivot 的Sql语句总结

    这个比较简单,用||或concat函数可以实现 select concat(id,username) str from app_user select id||username str from ap ...

  2. oracle 行转列 分析函数

    oracle 行转列 首先看一下源数据: 方法一:WM_CONCAT group by 这个方法没有问题. SELECT CODE_TS, WMSYS.WM_CONCAT(S_NUM + || ':' ...

  3. sql的行转列(PIVOT)与列转行(UNPIVOT) webapi 跨域问题 Dapper 链式查询 扩展 T4 代码生成 Demo (抽奖程序)

    sql的行转列(PIVOT)与列转行(UNPIVOT)   在做数据统计的时候,行转列,列转行是经常碰到的问题.case when方式太麻烦了,而且可扩展性不强,可以使用 PIVOT,UNPIVOT比 ...

  4. Oracle行转列,列转行,行列相互转换

    1.行转列 SELECT WM_CONCAT(COLUMN_NAME) COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME = 'T_CREATE_T ...

  5. sql 行转列 PIVOT 列转行 UNPIVOT

    原文:sql 行转列 PIVOT 列转行 UNPIVOT 一: 现有表一(t_table1),想转为表二(t_table2)的格式. 表一: 年 公司 收入 2013 公司1 12 2013 公司2 ...

  6. oracle行转列和列转行(pivot 和 unpivot 函数,wm_concat函数 )

    create table demo(id int,name varchar(20),nums int); ---- 创建表insert into demo values(1, '苹果', 1000); ...

  7. oracle行转列函数WMSYS.WM_CONCAT 用法

    1.通过 10g 所提供的 WMSYS.WM_CONCAT 函数即可以完成 行转列的效果 select group_code, wm_concat(display_title) from DR_OPM ...

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

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

  9. oracle 行转列函数pivot和unpivot

    今天接到业务部门的一个需求,需要对同一公司的不同财务指标进行排序,需要用到oracle的行转列函数unpivot. 财务报表的表结构为: 要实现业务部门的排序筛选功能,需要首先将行数据转为列数据: 使 ...

随机推荐

  1. 【SpringBoot】 Java中如何封装Http请求,以及JSON多层嵌套解析

    前言 本文中的内容其实严格来说不算springboot里面的特性,属于JAVA基础,只是我在项目中遇到了,特归纳总结一下. HTTP请求封装 目前JAVA对于HTTP封装主要有三种方式: 1. JAV ...

  2. 术语-IT术语-全栈工程师:全栈工程师

    ylbtech-术语-IT术语-全栈工程师:全栈工程师 全栈工程师是指掌握多种技能,并能利用多种技能独立完成产品的人. 1.返回顶部 1. 中文名:全栈工程师 外文名:Full Stack engin ...

  3. JS-Promise-先上传文件再提交表单

    很久前就使用过 Bootstrap File Input 上传文件,将上传文件返回的信息和表单一并提交回去. 最开始的时候是让用户手动点上传文件,然后再点提交表单: 之后尝试了写在回调里,不过这样会写 ...

  4. ScriptControl接口

    http://www.cnblogs.com/railgunman/articles/1824304.html BAIDU一下ScriptControl,大多数都是“Delphi中ScriptCont ...

  5. Vim 8.0 版本安装方法及添加Python支持

    利用Git安装 最简单也是最有效的方法 1. 获取Vim仓库: git clone https://github.com/vim/vim.git 2. 升级到最新的版本: cd vim git pul ...

  6. HTML--JS 定时刷新、时钟、倒计时

    <html> <head> <title>定时刷新时间</title> <script language="JavaScript&quo ...

  7. SVG绘制随机的柱形图+php

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. Fitness初接触

    http://www.fitnesse.org/FitNesseDownload 1. Click on the most recent fitnesse-standalone.jar file an ...

  9. 解决Ubuntu12.04下rpcbind: cannot open '/var/run/rpcbind/rpcbind.xdr' file for reading

    不知道怎么回事,实验室的电脑在同学搞过之后,每次启动都报错 rpcbind: cannot open '/run/rpcbind/rpcbind.xdr' file for reading, errn ...

  10. kmp(单次匹配)

    http://acm.hdu.edu.cn/showproblem.php?pid=1711 Number Sequence Problem Description Given two sequenc ...