《一》
合并两个结果集,并且两个结果集的数据 根据条目自动归为一行

结果集1 如下:
SQL> select t1.fplx,t1.djje from yw_zjfpjl t1  ;
FPLX                  DJJE
-------- -----------------
一等奖                  10
一等奖                  20
一等奖                  30
一等奖                  40
一等奖                  50
一等奖                  60
二等奖                  10
二等奖                  30
二等奖                  40
二等奖                  50
二等奖                  10
二等奖                  10
四等奖                  10
四等奖                  10
四等奖                  10
四等奖                  10
四等奖                  10
四等奖                  10
三等奖                  10
三等奖                  10
三等奖                  10
三等奖                  10
三等奖                  10
三等奖                  10
五等奖                  10
五等奖                  10
五等奖                  10
五等奖                  10
五等奖                  10
五等奖                  10

结果集2 如下:
SQL> select t2.fplx,t2.djje from yw_fjcwjl t2;  
FPLX                  DJJE
-------- -----------------
一等奖                  20
一等奖                  30
一等奖                  40
一等奖                  50
二等奖                  10
二等奖                  30
二等奖                  40
二等奖                  50
二等奖                  10
四等奖                  10
四等奖                  10
四等奖                  10
四等奖                  10
四等奖                  10
三等奖                  10
三等奖                  10
三等奖                  10
三等奖                  10
五等奖                  10
五等奖                  10
五等奖                  10
五等奖                  10
五等奖                  10
五等奖                  10

合并后结果集如下:
SQL> select fplx, sum(jecg), sum(jehcg), sum(jecw), sum(jehcw)
      from (select fplx, count(zjje) jecg, sum(zjje) jehcg, 0 jecw, 0 jehcw
              from yw_zjfpjl
             group by fplx
            union all
            select fplx, 0 jecw, 0 jehcw, count(zjje) jecw, sum(zjje) jehcw
              from yw_fjcwjl
             group by fplx)
     group by fplx
    order by fplx asc;

FPLX            SUM(JECG) SUM(JEHCG)  SUM(JECW)  SUM(JEHCW)
-----------   ----------- ----------- ---------- ------------
二等奖               6        150          6        150
三等奖               6         60          6         60
四等奖               6         60          6         60
五等奖               6         60          6         60
一等奖               6        210          6        210

《二》

原结果:

SELECT 1 NUM,
              '奖项数量(成功)',
              SUM(CASE WHEN ZJJX= '一等奖'  THEN   COUNT(ZJJE) ELSE 0 END),
              SUM(CASE WHEN ZJJX= '二等奖'  THEN   COUNT(ZJJE) ELSE 0 END) ,
              SUM(CASE WHEN ZJJX= '三等奖'  THEN   COUNT(ZJJE) ELSE 0 END) ,
              SUM(CASE WHEN ZJJX= '四等奖'  THEN   COUNT(ZJJE) ELSE 0 END) ,
              SUM(CASE WHEN ZJJX= '五等奖'  THEN   COUNT(ZJJE) ELSE 0 END)
 
        FROM YW_ZJFPJL T  --WHERE to_char(zjsj)='20111129'
        GROUP BY ZJJX
                
UNION ALL         
SELECT 2 NUM,
              '奖项数量(失败)',
              SUM(CASE WHEN ZJJX= '一等奖'  THEN   COUNT(ZJJE) ELSE 0 END),
              SUM(CASE WHEN ZJJX= '二等奖'  THEN   COUNT(ZJJE) ELSE 0 END) ,
              SUM(CASE WHEN ZJJX= '三等奖'  THEN   COUNT(ZJJE) ELSE 0 END) ,
              SUM(CASE WHEN ZJJX= '四等奖'  THEN   COUNT(ZJJE) ELSE 0 END) ,
              SUM(CASE WHEN ZJJX= '五等奖'  THEN   COUNT(ZJJE) ELSE 0 END)
 
        FROM YW_FJCWJL T  --WHERE to_char(zjsj)='20111129'
        GROUP BY ZJJX;

1    奖项数量(成功)    1    0    16    28    52
    2    奖项数量(失败)    0    0    5    23    33

修改之后 两行合并为一行

SELECT * FROM
(SELECT
              '奖项数量(成功)',
              SUM(CASE WHEN ZJJX= '一等奖'  THEN   COUNT(ZJJE) ELSE 0 END) 一等奖成功,
              SUM(CASE WHEN ZJJX= '二等奖'  THEN   COUNT(ZJJE) ELSE 0 END) 二等奖成功,
              SUM(CASE WHEN ZJJX= '三等奖'  THEN   COUNT(ZJJE) ELSE 0 END) 三等奖成功,
              SUM(CASE WHEN ZJJX= '四等奖'  THEN   COUNT(ZJJE) ELSE 0 END) 四等奖成功,
              SUM(CASE WHEN ZJJX= '五等奖'  THEN   COUNT(ZJJE) ELSE 0 END) 五等奖成功
        FROM YW_ZJFPJL   --WHERE to_char(zjsj)='20111129'
        GROUP BY ZJJX    ),             
    
(SELECT
              '奖项数量(失败)',
              SUM(CASE WHEN ZJJX= '一等奖'  THEN   COUNT(ZJJE) ELSE 0 END) 一等奖失败,
              SUM(CASE WHEN ZJJX= '二等奖'  THEN   COUNT(ZJJE) ELSE 0 END) 二等奖失败,
              SUM(CASE WHEN ZJJX= '三等奖'  THEN   COUNT(ZJJE) ELSE 0 END) 三等奖失败,
              SUM(CASE WHEN ZJJX= '四等奖'  THEN   COUNT(ZJJE) ELSE 0 END) 四等奖失败,
              SUM(CASE WHEN ZJJX= '五等奖'  THEN   COUNT(ZJJE) ELSE 0 END) 五等奖失败
        FROM YW_FJCWJL T  --WHERE to_char(zjsj)='20111129'
        GROUP BY ZJJX );
        
--1    奖项数量(成功)    1    0    16    28    52    奖项数量(失败)    0    0    5    23    33

《三 经典版的case when》

SELECT * FROM
       (SELECT 1 NUM,
              '奖项金额',
              SUM(CASE WHEN DJMC= '一等奖' AND CGBZ=0 THEN DJJE ELSE 0 END) ,
              SUM(CASE WHEN DJMC= '二等奖' AND CGBZ=0 THEN DJJE ELSE 0 END) ,
              SUM(CASE WHEN DJMC= '三等奖' AND CGBZ=0 THEN DJJE ELSE 0 END) ,
              SUM(CASE WHEN DJMC= '四等奖' AND CGBZ=0 THEN DJJE ELSE 0 END) ,
              SUM(CASE WHEN DJMC= '五等奖' AND CGBZ=0 THEN DJJE ELSE 0 END) ,  
              SUM(CASE WHEN DJMC= '一等奖' AND CGBZ=1 THEN DJJE ELSE 0 END) ,
              SUM(CASE WHEN DJMC= '二等奖' AND CGBZ=1 THEN DJJE ELSE 0 END) ,
              SUM(CASE WHEN DJMC= '三等奖' AND CGBZ=1 THEN DJJE ELSE 0 END) ,
              SUM(CASE WHEN DJMC= '四等奖' AND CGBZ=1 THEN DJJE ELSE 0 END) ,
              SUM(CASE WHEN DJMC= '五等奖' AND CGBZ=1 THEN DJJE ELSE 0 END)    
        FROM XXDZMX T  WHERE DZYF=20111129 AND ZFLX=0
        UNION ALL
       SELECT 2 NUM,
              '奖项数量',
              SUM(CASE WHEN DJMC= '一等奖' AND CGBZ=0 THEN 1 ELSE 0 END),
              SUM(CASE WHEN DJMC= '二等奖' AND CGBZ=0 THEN 1 ELSE 0 END),
              SUM(CASE WHEN DJMC= '三等奖' AND CGBZ=0 THEN 1 ELSE 0 END),
              SUM(CASE WHEN DJMC= '四等奖' AND CGBZ=0 THEN 1 ELSE 0 END),
              SUM(CASE WHEN DJMC= '五等奖' AND CGBZ=0 THEN 1 ELSE 0 END),
              SUM(CASE WHEN DJMC= '一等奖' AND CGBZ=1 THEN 1 ELSE 0 END),
              SUM(CASE WHEN DJMC= '二等奖' AND CGBZ=1 THEN 1 ELSE 0 END),
              SUM(CASE WHEN DJMC= '三等奖' AND CGBZ=1 THEN 1 ELSE 0 END),
              SUM(CASE WHEN DJMC= '四等奖' AND CGBZ=1 THEN 1 ELSE 0 END),
              SUM(CASE WHEN DJMC= '五等奖' AND CGBZ=1 THEN 1 ELSE 0 END)      
        FROM XXDZMX T WHERE DZYF=20111129 AND ZFLX=0
        ) ORDER BY NUM
        
1 奖项金额  0 50  10  0 2   200 0   10  5  2
2 奖项数量  0 1   1   0 1    1  0    1  1  1

oracle-行转列的更多相关文章

  1. oracle 行转列 分析函数

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

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

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

  3. Oracle行转列、列转行的Sql语句总结

    多行转字符串 这个比较简单,用||或concat函数可以实现  SQL Code  12    select concat(id,username) str from app_userselect i ...

  4. Oracle行转列、列转行的Sql语句总结(转)

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

  5. oracle 行转列、列转行

    最近做数据处理,经常遇到需要行转列.列转行的场景,记录个非常简单实用的oracle  列转行.行转的列方法 1.行转列,基础数据如下 做行转列处理 处理SQL select user_name,max ...

  6. Oracle行转列操作

    有时候我们在展示表中数据的时候,需要将行转为列来显示,如以下形式: 原表结构展示如下:---------------------------产品名称    销售额     季度------------ ...

  7. oracle行转列(连接字符串函数)

    方法一:wmsys.wm_concat(column) 介绍:其函数在Oracle 10g推出,在10g版本中,返回字符串类型,在11g版本中返回clob类型.括号里面的参数是列,而且可以是多个列的集 ...

  8. Oracle行转列的函数

    --行转列的函数-- CREATE OR REPLACE FUNCTION Calvin( col IN VARCHAR2,dw IN VARCHAR2) RETURN VARCHAR2 IS ret ...

  9. oracle 行转列 列转行

    行转列 这是一个Oracle的列转行函数:LISTAGG() 先看示例代码: with temp as( select 'China' nation ,'Guangzhou' city from du ...

  10. oracle行转列、列转行、连续日期数字实现方式及mybatis下实现方式

    转载请注明出处:https://www.cnblogs.com/funnyzpc/p/9977591.html 九月份复习,十月份考试,十月底一直没法收心,赶在十一初 由于不可抗拒的原因又不得不重新找 ...

随机推荐

  1. Delphi在win7/vista下写注册表等需要管理员权限的解决方案

    看到论坛好多人问win7下写注册表的问题,我结合自己的理解写了一点东西,首先声明一下,本人初学Delphi,水平有限,大家见笑了,有什么不对之处请老鸟多指点. [背景]win7/Vista提供的UAC ...

  2. 数据结构(分块):[HZOI 2015]easy seq

    [题目描述] 给定一个序列,下标从0开始,分别为a0,a1,a2...an−1,有m个询问,每次给出l和r,求满足ai=aj且l<=i<=j<=r时j−i的最大值 本题强制在线,l和 ...

  3. CXF Service Interceptor请求,响应报文之控制台输出

    一:定义接口 @WebService(targetNamespace = "http://www.unionpay.com/client/appprovider", name = ...

  4. CSS 概览(CSS2.1)更新时间2014-0406

    CSS和HTML结合 <link rel="stylesheet" type="text/css" href="sheet1.css" ...

  5. 用PHP写的一个简单的分页类 1.0版

    <?php /* 分页类 用于实现对多条数据分页显示 version:1.0 author:Knight E-Mail:S.Knight.Work@gmail.com Date:2013-10- ...

  6. php获取客户端ip get_client_ip()

    php获取客户端ip get_client_ip() function get_client_ip(){if (getenv("HTTP_CLIENT_IP") && ...

  7. 上海Uber优步司机奖励政策(1月25日~1月31日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  8. nyoj 95 众数问题【水】

    众数问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的成为该元素的重数, 多重集合S重 ...

  9. 每天一道算法_6_I Think I Need a Houseboat

    今天的题目是I Think I Need a Houseboat 如下: Description Fred Mapper is considering purchasing some land in ...

  10. Mysql性能优化那些事

    ​    ​对于全栈而言,数据库技能不可或缺,关系型数据库或者nosql,内存型数据库或者偏磁盘存储的数据库,对象存储的数据库或者图数据库--林林总总,但是第一必备技能还应该是MySQL.从LAMP的 ...