当前位置:  数据库>oracle

Oracle 简单的列转行

    来源: 互联网  发布时间:2017-06-11

    本文导语: Oracle 简单的列转行 需求是,统计每个部门不同工种的薪水总和。 SQL> select deptno,ename,job,sal from emp;    DEPTNO ENAME      JOB              SAL---------- ---------- --------- ----------        20 SMITH      CLERK            800        30 ALLEN...

Oracle 简单的列转行

需求是,统计每个部门不同工种的薪水总和。

SQL> select deptno,ename,job,sal from emp;
    DEPTNO ENAME      JOB              SAL
---------- ---------- --------- ----------
        20 SMITH      CLERK            800
        30 ALLEN      SALESMAN        1600
        30 WARD      SALESMAN        1250
        20 JONES      MANAGER        2975
        30 MARTIN    SALESMAN        1250
        30 BLAKE      MANAGER        2850
        10 CLARK      MANAGER        2450
        20 SCOTT      ANALYST        3000
        10 KING      PRESIDENT      5000
        30 TURNER    SALESMAN        1500
        20 ADAMS      CLERK          1100
        30 JAMES      CLERK            950
        20 FORD      ANALYST        3000
        10 MILLER    CLERK          1300
已选择14行。

SQL> select deptno,
          nvl(sum(decode(job, 'MANAGER', sal)), 0) "s_MANAGER",
          nvl(sum(decode(job, 'ANALYST', sal)), 0) "s_ANALYST",
          nvl(sum(decode(job, 'CLERK', sal)), 0) "s_CLERK",
          nvl(sum(decode(job, 'PRESIDENT', sal)), 0) "s_PRESIDENT",
          nvl(sum(decode(job, 'SALESMAN', sal)), 0) "s_SALESMAN"
      from emp
    group by deptno;
    DEPTNO  s_MANAGER  s_ANALYST    s_CLERK s_PRESIDENT s_SALESMAN
---------- ---------- ---------- ---------- ----------- ----------
        30      2850          0        950          0      5600
        20      2975      6000      1900          0          0
        10      2450          0      1300        5000          0

 


SQL> select deptno,
          nvl(sum(case job when 'MANAGER' then sal else null end), 0) "s_MANAGER",
          nvl(sum(case job when 'ANALYST' then sal else null end), 0) "s_ANALYST",
          nvl(sum(case job when 'CLERK' then sal else null end), 0) "s_CLERK",
          nvl(sum(case job when 'PRESIDENT' then sal else null end), 0) "s_PRESIDENT",
          nvl(sum(case job when 'SALESMAN' then sal else null end), 0) "s_SALESMAN"
      from emp
    group by deptno;

    DEPTNO  s_MANAGER  s_ANALYST    s_CLERK s_PRESIDENT s_SALESMAN
---------- ---------- ---------- ---------- ----------- ----------
        30      2850          0        950          0      5600
        20      2975      6000      1900          0          0
        10      2450          0      1300        5000          0

 

Oracle 单实例 从32位 迁移到 64位 方法 

在CentOS 6.4下安装Oracle 11gR2(x64)

Oracle 11gR2 在VMWare虚拟机中安装步骤

Debian 下 安装 Oracle 11g XE R2

Oracle导入导出expdp IMPDP详解

Oracle 10g expdp导出报错ORA-4031的解决方法


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE日期相关操作
  • Linux系统下Oracle的启动与Oracle监听的启动
  • Oracle 数据库开发工具 Oracle SQL Developer iis7站长之家
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • Oracle 12c的九大最新技术特性介绍
  • 网间Oracle的连接,远程连接Oracle服务器??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,