偶然需要了解,学习了这篇文章,转载记录一下

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

1.创建测试数据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 3372.使用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;

4.使用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;

这样的问题,要找出他的关键点来。其实就是行转列,这是一位同学在Itpub上的问题。

问题的解决:

建表:

create table t_result

(d varchar2(10),result varchar2(4));

插入数据:

insert into t_result values ('2014-01-01','胜');

insert into t_result values ('2014-01-01','胜');

insert into t_result values ('2014-01-01','负');

insert into t_result values ('2014-01-02','胜');

insert into t_result values ('2014-01-02','负');

insert into t_result values ('2014-01-02','负');

写法如下, 要扫描两次表

select t1.d,t1.c1 '胜',t2.c2 '负' from

(select count(result) c1,d from t_result where result = '胜' group by d) t1

LEFT outer join

(select count(result) c2,d from t_result where result = '负' group by d) t2

on t1.d = t2.d

行转列:

SELECT d,SUM(decode(result,'胜',1,0)),SUM(decode(result,'负',1,0))

FROM t_result

GROUP BY d

select d,

sum(case result when '胜' then 1 else 0 end )胜,

sum(case result when '负' then 1 else 0 end )负

from t_result group by d order by d;

oracle非常量不能用于privot_Oracle 行转列(pivot、wm_concat、decode)使用总结(转载)...相关推荐

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

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

  2. oracle非常量不能用于privot_Oracle(二)

    单行函数:只有一个参数输入,只有一个结果输出 多行函数或分组函数:可有多个参数输入,只有一个结果输出 1.测试lower/upper/initcap函数,使用dual哑表 select lower(' ...

  3. Oracle之行转列pivot函数

    文章目录 方法一: Oracle行转列pivot函数 方法二:使用MAX DECODE 实现 方法一: Oracle行转列pivot函数 语法:pivot(任一聚合函数 for 需要转列的值所在列名 ...

  4. unpivot用法 oracle10g,Oracle 行转列pivot 、列转行unpivot 的Sql语句总结(转)

    多行转字符串 这个比较简单,用||或concat函数可以实现 1 select concat(id,username) str from app_user 2 3 select id||usernam ...

  5. oracle unpivot 索引_Oracle 行转列pivot 、列转行unpivot 的Sql语句总结

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

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

    多行转字符串 这个比较简单,用||或concat函数可以实现 [sql] view plaincopy print? select concat(id,username) str from app_u ...

  7. oracle 按旬统计并且每月小计 行转列 PIVOT函数 与分组小计 ROLLUP 函数

    数据库版本:oralce  11g 表名WM_TD_WATER_DAILY 结构如下,我把没用到的字段隐藏了,全放出来不太好哈. MONITOR_ID为BI_TB_MONITOR_BI的ID ,用于关 ...

  8. oracle 单字段、多字段行转列

    oracle 行转列(单字段) --CHBGID,bw1为数据库原字段:beiyong, cdbh 为临时字段:in()里面的为需要转列的字段 select CHBGID,bw1 , beiyong, ...

  9. Oracle行转列 pivot函数 常见用法

    1.根据分类 select     code,     proname,     amt_jbgz,          ... from bgt_extable pivot ( sum(nvl(金额, ...

最新文章

  1. PMP-【第1章 引论】-2020-12-07(18页-24页)
  2. js中window.location.href,location.href,parent.location.href,top.location.href的用法
  3. AUTOSAR从入门到精通100讲(四十四)-AUTOSAR 通信服务-PDU Router
  4. jsessionid每次请求都在变_为什么每次沟通都变争吵,学会这4条沟通原则,解决90%的沟通问题...
  5. 7-2 合并两个有序数组为新的有序数组 (15 分)
  6. 打开容器世界的大门: Docker、POD 初探
  7. 是什么让spring 5放弃了使用Guava Cache?
  8. Keil安装使用基础篇
  9. Flink-sql之当前日期
  10. U盘exe病毒解决方案
  11. java 读取pdf表格_在Java中使用tabula提取PDF中的表格数据
  12. 学成在线-处理常见视频格式avi,mp4,mov,rmvb,flv
  13. Uint 和 int 的区别
  14. 高通WLAN稳定和功耗分析--目前高通项目支持的功耗策略
  15. 禁用红蜘蛛自启的简单办法
  16. Raspberry 4B
  17. Lae程序员小漫画(1),仅供一乐
  18. css之-单行文本溢出显示省略号,多行文本溢出显示省略号
  19. TOEFL 托福综合写作模板【高级版+低级版】
  20. Mac上安装flink笔记

热门文章

  1. R语言使用caret包对GBM模型进行参数调优实战:Model Training and Parameter Tuning
  2. R语言KNN模型数据分类实战
  3. R语言描述性统计分析:相关性分析
  4. python模拟退火(Simulated Annealing)参数寻优实战
  5. 供销大集有潜力吗_菌肥内幕被揭开!快看你买的靠谱吗?
  6. ML基石_4_FeasibilityOfLearning
  7. freemarker中运算符_如何在Web应用系统表示层开发中应用Velocity模板技术
  8. php 去掉img,php如何删除img标签
  9. 批量残差网络-Aggregated Residual Transformations for Deep Neural Networks
  10. LeetCode 1119. Remove Vowels from a String--C++,Java,Python解法