|
这个报表不是我想看的最终报表,我需要的报表是稠密报表,也就是对于每个产品,横跨所有年、所有区域都应该有汇总数据,但是现在缺失了很多数据,比如对于产品A来说,少了07年4个区域的汇总数据,08年少了北区的汇总数据,最终的报表数据应该有年数目(2)*产品数(3)*区域数(4)=24行记录。
现在需要填补每个产品所有年份和所有区域2维缺失数据,那么怎么做呢?首先需要补全每个产品所有年或者每个产品所有区域的数据,然后按产品和年分区或产品和区域分区再与所有区域或所有年外连接,这样就能填充缺失数据了,所有对2维缺失数据填充有2步PARTITIONED OUTER JOIN,其他维度的类似。
这个我是这样实现:
SELECT years,product_name,regions,SUM(sales) sum_sales FROM
(SELECT m.years,t.product_name,m.regions,nvl(sales,0) sales
FROM t
PARTITION BY (t.product_name)
RIGHT JOIN
(SELECT years,regions FROM
(SELECT DISTINCT years FROM t),
(SELECT DISTINCT regions FROM t)) m
ON t.years=m.years
AND t.regions=m.regions)
GROUP BY years,product_name,regions
ORDER BY years,product_name,regions
不知有问题否? |
|