A表
---------------------
地区 金额 类型 时间
B表
-----------------------
类型 类型名称 现在要展现成个下面格式,按地区分组。
----------------------------------------------------------------------------------------------
地区 |时间 | 金额 | 类型
----------------------------------------------------------------------------------------------
类型1 | 类型2 | 类型3 | 类型4
----------------------------------------------------------------------------------------------不知道大家看明白了么?表述的不好。就是在地区等条件的分组上, 还要对类型分组,显示各个类型的金额。
---------------------
地区 金额 类型 时间
B表
-----------------------
类型 类型名称 现在要展现成个下面格式,按地区分组。
----------------------------------------------------------------------------------------------
地区 |时间 | 金额 | 类型
----------------------------------------------------------------------------------------------
类型1 | 类型2 | 类型3 | 类型4
----------------------------------------------------------------------------------------------不知道大家看明白了么?表述的不好。就是在地区等条件的分组上, 还要对类型分组,显示各个类型的金额。
下面是固定类型
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 地区;
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.类型)
group by A.地区,B.类型不知道你上面的时间是干啥用的,根本没用上...
select 地区 ,类型,sum(金额) from a t GROUP BY GROUPING SETS(地区 ,类型)
时间,
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 地区,类型;
我唯一不明白的是,一个列数不固定的sql你如何能够不用动态sql一次搞定的,还是你没看明白题?
时间,
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 地区,类型;