A表
---------------------
地区  金额  类型  时间
B表
-----------------------
类型  类型名称  现在要展现成个下面格式,按地区分组。
----------------------------------------------------------------------------------------------
地区 |时间 | 金额 |                              类型
----------------------------------------------------------------------------------------------
  类型1  | 类型2 |  类型3  | 类型4
----------------------------------------------------------------------------------------------不知道大家看明白了么?表述的不好。就是在地区等条件的分组上, 还要对类型分组,显示各个类型的金额。

解决方案 »

  1.   

    行转列,使用decode或case函数,如果类型不固定,可拼接SQL动态转换
    下面是固定类型
    SELECT 地区,
           SUM(decode(类型, 1, 金额, 0)) "1-3个月",
           SUM(decode(类型, 2, 金额, 0)) "3-6个月",
           SUM(decode(类型, 3, 金额, 0)) "6-9个月",
           SUM(decode(类型, 4, 金额, 0)) "9-12个月"
      FROM b
     GROUP BY 地区;
      

  2.   

    看看这个吧:记着给分就好  呵呵
    select v.地区,v.类型,sum(v.金额) from 
    (
    select a.地区 地区,a.金额 金额,b.类型名称 类型,a.时间 时间 from a a left 
    jion b b on(a.类型=b.类型)
    ) v 
    group by (v.地区,v.类型)
      

  3.   

    select A.地区,B.类型名称,sum(A.金额) from A,B where A.类型=B.类型(+)
    group by A.地区,B.类型不知道你上面的时间是干啥用的,根本没用上...
      

  4.   

    你是不是这个意思看看SQL 
    select 地区 ,类型,sum(金额) from a t GROUP BY GROUPING SETS(地区 ,类型)
      

  5.   

    GROUPING SETS(地区 ,类型) 分析函数 意思是 分别各自按照地区和类型分组
      

  6.   

    SELECT 地区,
           时间,
           SUM(decode(类型, 1, 金额, 0)) "1-3个月",
           SUM(decode(类型, 2, 金额, 0)) "3-6个月",
           SUM(decode(类型, 3, 金额, 0)) "6-9个月",
           SUM(decode(类型, 4, 金额, 0)) "9-12个月"
      FROM b
     GROUP BY 地区,类型;
      

  7.   

    用oracle分析函数可以很轻松的解决这种问题,你最好到网上搜一下关于分析函数的说明,很有用的
      

  8.   


    我唯一不明白的是,一个列数不固定的sql你如何能够不用动态sql一次搞定的,还是你没看明白题?
      

  9.   

    SELECT 地区,
      时间,
      SUM(decode(类型, 1, 金额, 0)) "1-3个月",
      SUM(decode(类型, 2, 金额, 0)) "3-6个月",
      SUM(decode(类型, 3, 金额, 0)) "6-9个月",
      SUM(decode(类型, 4, 金额, 0)) "9-12个月"
      FROM b
     GROUP BY 地区,类型;