日期:2014-05-16  浏览次数:20411 次

关于oracle和db2中的纵表转横表的例子
在数据库开发的过程中,经常会遇到把纵表的数据转换为横表展示出来。今天我就把经常遇到的实现的方法总结出来,还请大家指点错误啊。或者有更好的方法,也可以让我学习学习。
     ---以下脚本是在db2中实现的
     第一个:纵表转横表的"SQL"示例
     纵表结构: TEST_vip
     acct_month       卡级别             数量
     201201            钻卡              1
     201201            金卡              2
     201201            银卡              3

     转换后显示如下
     acct_month  钻卡数量  金卡数量  银卡数量
     201201       1         2         3
    
     实现思路为先将表中的数据构造成需要展示的列数,再在最外层将此值全部累加即可。

     实现的sql为:
      select acct_month,
             sum(zk_count),
             sum(jk_count),
             sum(yk_count)
      from (select acct_month,
                   case when card_level = '钻卡' then card_count end as zk_count,
                    case when card_level = '金卡' then card_count end as jk_count,
                    case when card_level = '银卡' then card_count end as yk_count
            from TEST_vip
         ) group by acct_month;
    

       第二个:
       表结构如下:
       表1                          表2
       字段1   字段2            字段3  字段4
       A        1               A       1,2,3
       A        2               B       5,6
       A        3               C       7,8,9
       B        5
       B        6
       C        7
       C        8
   &