在使用Oracle的时候,有个需求需要将统计的数量关联别的表格联查出来,就想到了用行转列,搜了很多种方法,这里记录一下自己遇到的坑。

首先要确定一下自己使用的Oracle的版本:
因为:行转列:PIVOT 列转行:UNPIVOT 这两个是在Oracle11g上面新增的函数。Oracle10以及之前的版本是不支持这两个函数的。

查看Oracle版本:select * from v$version;或者select banner from sys.v_$version;

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE    10.2.0.1.0  Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

这里可以看到我用的是Oracle 10 具体的版本号为:10.2.0.1.0
  10:版本号
  2:新特性版本号
  0(第一个):维护版本号
  1(第二个):普通的补丁设置号码
  0:非凡的平台补丁设置号码

下面简单说下我的需求:
实际查询结果如下:

select '1100003000001' xh ,'1' bs,'20' total from dual union all
select '1100003000001' xh ,'0' bs,'6246' total from dual union all
select '1100003000002' xh ,'1' bs,'123' total from dual union all
select '1100003000002' xh ,'0' bs,'5000' total from dual


这里我想以序号(xh)这一列相同的给合并,并且把标识(bs)字段的0和1对应的total改成在同一行以两个字段显示。
最后转换的效果:

with temp as (
select '1100003000001' xh ,'1' bs,'20' total from dual union all
select '1100003000001' xh ,'0' bs,'6246' total from dual union all
select '1100003000002' xh ,'1' bs,'123' total from dual union all
select '1100003000002' xh ,'0' bs,'5000' total from dual
)
select xh,
sum(decode(bs, '0', total, 0)) as dtotal,
sum(decode(bs, '1', total, 0)) as qtotal
from temp group by xh

可以看到这里使用了decode函数,外面又套了一层sum函数,看着有点复杂了,一次查询使用了两次函数,目前数据量不大,不知道后面数据量大了影响大不大。。。。。。

那么要是去掉sum函数呢,查询会是什么样的看下:

with temp as (
select '1100003000001' xh ,'1' bs,'20' total from dual union all
select '1100003000001' xh ,'0' bs,'6246' total from dual union all
select '1100003000002' xh ,'1' bs,'123' total from dual union all
select '1100003000002' xh ,'0' bs,'5000' total from dual
)
select xh,
decode(bs, '0', total, 0) as dtotal,
decode(bs, '1', total, 0) as qtotal
from temp


可见没有group by ,等于转换之后有两条数据,一条一个字段是0,另一个字段是total,但是行转列还是成功了,加上group by 才是我最终想要的结果

参考:
https://www.cnblogs.com/CryOnMyShoulder/p/7644697.html
https://www.cnblogs.com/xiao02fang/p/9705609.html

Oracle 行转列的坑相关推荐

  1. oracle 行转列后列名,Oracle 多行转多列,列值转为列名

    前段时间做调查问卷,客户创建自定义问卷内容,包括题目和选项内容; 之后需要导出问卷明细,,,,麻烦来咯 于是到网上到处搜索,没有直接结果;于是又找各种相似的,,终于功夫不负有心人 然后最终自己写出来了 ...

  2. oracle行转列处理方法,oracle行转列解决办法

    oracle行转列 Cust prod 1       A 1       B 1       C 2       A 2       B Return Cust     Prod1     Prod ...

  3. oracle行转列和sqlserver行转列语法分析比对

    前言 最近遇到一些老项目,在实施过程中需要切换数据库,遇到了好几处行转列的语法,在网上找了一些资料后,都不能很好的解释分析,下面我将个人在工作中遇到的一些问题以及解决方案详细的描述记录下来,如果有遇到 ...

  4. oracle不定列,oracle行转列

    oracle行转列(动态行转不定列) 思路:创建一个存储过程,用存储过程来动态的创建更新查询视图 1.视图定义如下 create or replace view emp_view as select ...

  5. oracle 行转列字符拼接,oracle 行转列,用特殊符号拼接

    第一种 函数 wm_content('待转列名称') 11g 往后,不推荐使用 实例 多表关联时可以使用 (SELECT wm_concat(nvl(B1.OPERA_CODE,'a')) AS OP ...

  6. ORACLE行转列和列转行

    文章目录 ORACLE行转列和列转行 定义 ORACLE-行转列-unpivot 数据准备 行转列使用 ORACLE-列转行-pivot 数据准备 列转行使用 ORACLE行转列和列转行 定义 行转列 ...

  7. oracle 行转列sql语句,行转列(sql行转列)

    sql语句行转列?怎么转啊 select MIN(id) as ID, name, sex, sum(case when num=2 then 2 end) as num2, sum(case whe ...

  8. Oracle 行转列 pivot函数基本用法

    2018年9月30日22点,眼看着就10月份了,回头看下,8月份就写了一篇博客,9月一篇都没写,想着还是得续一续. 刚好前几天,帮一个群友处理了一个关于Oracle中行转列,根据查询中有的项目,动态转 ...

  9. Oracle行转列、列转行实例

    业务需求如下: 我们计算报表数据一般都是从清单表数据去汇总计算的,例如这个需求就是通过一条一条的订单根据区域日期等去区分汇总.报表计算这个很简单我这里就不叙述了. 下面看下普通计算出来的报表,想必大家 ...

  10. oracle+行换列,Oracle的数据表中行转列与列转行的操作实例讲解

    行转列一张表 查询结果为 --行转列 select years,(select amount from Tb_Amount as A where month=1 and A.years=Tb_Amou ...

最新文章

  1. 中南大学计算机辅助工艺设计,中南大学计算机辅助制造大作业.doc
  2. 将h.264视频流封装成flv格式文件
  3. c++STL容器的Deque
  4. 开发者必备Linux命令
  5. d soft php package,让程序飞起来之 Laravel OPcache Package
  6. spring注解 annotation
  7. 单商户商城系统功能拆解13—分类管理
  8. RGB888转换为RGB565原理及工具
  9. html5控制gif速度,用gifsicle优化GIF动图
  10. 国际短信平台怎么找?
  11. tomcat Web服务器目录结构和发布网站
  12. 通过exchangelib库连接到公司exchange邮箱
  13. 凹凸贴图(Bump Map)实现原理以及与法线贴图(Normal Map)的区别
  14. 手机微信群控源码二次开发
  15. LGB、XGB、CBT参数
  16. css基础--float 的天然克星 clear/BFC
  17. 62-Mybatis高级介绍
  18. Intellij IDEA里的md5验证
  19. javase笔记基础篇
  20. ARM Cortex-A系列编程指南之ARMv8 A -- 第二章 ARMv8 A架构和处理器

热门文章

  1. 百度地图迁徙大数据_百度地图迁徙大数据:北上广深城内出行年后首次大幅增长...
  2. 服务器数据抓包(原来微信图片真的可以抓包看的)
  3. mongodb仲裁者_真理的仲裁者
  4. Arch 使用 i3 美化桌面
  5. 14天精读掌握《陶哲轩:实分析》第11天 2019.7.18
  6. 可靠性测试的定义、测试点及用例设计方法
  7. 安装完固态硬盘后计算机里没显示,安装了双硬盘电脑却不显示新硬盘怎么办
  8. 深刻认识差模电压和共模电压
  9. 《远见》的读后感作文1000字范文
  10. django之admin调整页面展示