打印本文 打印本文 关闭窗口 关闭窗口
创建交叉报表(oracle)
作者:武汉SEO闵涛  文章来源:敏韬网  点击数940  更新时间:2009/4/22 22:04:12  文章录入:mintao  责任编辑:mintao

创建交叉报表

create table t1(
goodid  number(10)  not null,
saledate  date   not null,
salesum  number(10)
);

要求生成本年度每个月的产品销售状况表

 m1 m2 m3 ... m12
g1
g2
.
.
.
gn

下面是生成报表的sql

SELECT goodid,
 SUM(decode(to_char(saledate,''''mm''''),''''01'''',salesum)) "01",
 SUM(decode(to_char(saledate,''''mm''''),''''02'''',salesum)) "02",
 SUM(decode(to_char(saledate,''''mm''''),''''03'''',salesum)) "03",
 SUM(decode(to_char(saledate,''''mm''''),''''04'''',salesum)) "04",
 SUM(decode(to_char(saledate,''''mm''''),''''05'''',salesum)) "05",
 SUM(decode(to_char(saledate,''''mm''''),''''06'''',salesum)) "06",
 SUM(decode(to_char(saledate,''''mm''''),''''07'''',salesum)) "07",
 SUM(decode(to_char(saledate,''''mm''''),''''08'''',salesum)) "08",
 SUM(decode(to_char(saledate,''''mm''''),''''09'''',salesum)) "09",
 SUM(decode(to_char(saledate,''''mm''''),''''10'''',salesum)) "10",
 SUM(decode(to_char(saledate,''''mm''''),''''11'''',salesum)) "11",
 SUM(decode(to_char(saledate,''''mm''''),''''12'''',salesum)) "12"
from t1
where to_char(saledate,''''yyyy'''') = ''''2004''''
group by goodid
order by goodid;

 

打印本文 打印本文 关闭窗口 关闭窗口