美文网首页
行转列- Case When,Decode,PIVOT

行转列- Case When,Decode,PIVOT

作者: 叨叨侠爱叨叨 | 来源:发表于2017-05-23 18:41 被阅读25次

案例驱动

--建表
CREATE TABLE btr.btr.populations( 
country VARCHAR2(20), 
sex INT, 
populcation INT 
); 
--插入数据
insert into btr.populations (COUNTRY, SEX, POPULCATION) 
values ('中国  ', 1, 340); 
insert into btr.populations (COUNTRY, SEX, POPULCATION) 
values ('中国  ', 2, 260); 
insert into btr.populations (COUNTRY, SEX, POPULCATION) 
values ('美国  ', 1, 45); 
insert into btr.populations (COUNTRY, SEX, POPULCATION) 
values ('美国  ', 2, 55); 
insert into btr.populations (COUNTRY, SEX, POPULCATION) 
values ('加拿大', 1, 51); 
insert into btr.populations (COUNTRY, SEX, POPULCATION) 
values ('加拿大', 2, 49); 
insert into btr.populations (COUNTRY, SEX, POPULCATION) 
values ('英国  ', 1, 40); 
insert into btr.populations (COUNTRY, SEX, POPULCATION) 
values ('英国  ', 2, 60); 

--------------------------------------Case When 方式 -------------------------------------------------------

SELECT a.COUNTRY AS "国家", 
           SUM(CASE 
                 WHEN a.SEX = 1 
                  THEN a.POPULCATION 
                   END) AS "男", 
          SUM(CASE 
                WHEN a.SEX = 2 
                 THEN a.POPULCATION 
                  END) AS "女" 
  FROM btr.populations a 
GROUP BY a.COUNTRY 
--------------------------------------decode 方式-------------------------------------------------------------
Decode 方式 

SELECT a.COUNTRY AS "国家", 
   SUM(DECODE(a.SEX, 1, a.POPULCATION)) AS "男", 
   SUM(DECODE(a.SEX, 2, a.POPULCATION)) AS "女" 
  FROM populations a 
GROUP BY a.COUNTRY 
--------------------------------------PIVOT 方式 11G特有的方式 ----------------------------------------

SELECT
country,男,女
  FROM (
            SELECT a.COUNTRY , a.SEX, a.POPULCATION 
             FROM btr.populations a) 
  PIVOT( SUM(POPULCATION) FOR SEX IN(1 AS 男 ,2 AS 女 ))

资料来源:http://albb0608.iteye.com/blog/1218737
decode详解:http://www.jianshu.com/p/3097b8bcc901

相关文章

  • 行转列- Case When,Decode,PIVOT

    案例驱动 资料来源:http://albb0608.iteye.com/blog/1218737decode详解:...

  • oracle行列转换

    行转列 建表、插数 转换方式 CASE DECODE PIVOT wmsys.wm_concat PL/SQL 列...

  • SQL行列转换

    行转列1.1、case when1.2、内置函数pivot 列转行2.1、unpivot2.2、union实现

  • MySQL 行转列,列传行

    静态行转列 使用case...when....then 进行行转列 使用IF() 进行行转列 (1)SUM() 是...

  • ORACLE 行列转函数

    Oracle11g提供了新的行列转换操作:PIVOT(行转列)和UNPIVOT列转行。老版本使用decode来进行...

  • MySQL的CASE WHEN用法

    在数据分析时经常要用到行转列,此时如果使用case when就会方便很多,case when的熟练使用程度,可以说...

  • sql行转列,列转行

    行转列,列转行是我们在开发过程中经常碰到的问题。行转列一般通过CASE WHEN 语句来实现,也可以通过 SQL ...

  • sql技巧(五)行转列和列转行

    参考链接 行转列容易理解:依次查询所需要的列用union连接 列转化行这个用sum(case when then ...

  • Hive行转列实现Pivot

    前言 传统关系型数据库中,无论是Oracle(11g之后)还是SQLserver(2005之后),都自带了Pivo...

  • pandas 行转列一种典型输出报表的解决方法

    工作中经常需要对数据进行行转列加工处理,输出数据作为报表,类似于 SQL 语句中 case when 的处理。下图...

网友评论

      本文标题:行转列- Case When,Decode,PIVOT

      本文链接:https://www.haomeiwen.com/subject/pzegxxtx.html