oracle 小计,合计的算法
2009-07-17 06:33
507 查看
----
INSERT INTO T (YEAR, PROVINCE,CITY ,sales)
VALUES(2007,'河北','石家庄',10)
INSERT INTO T (YEAR, PROVINCE,CITY ,sales)
VALUES(2007,'河北','承德',13);
INSERT INTO T (YEAR, PROVINCE,CITY ,sales)
VALUES(2007,'陕西','西安',23);
INSERT INTO T (YEAR, PROVINCE,CITY ,sales)
VALUES(2007,'陕西','石家庄',23);
INSERT INTO T (YEAR, PROVINCE,CITY ,sales)
VALUES(2008,'河北','石家庄',35);
INSERT INTO T (YEAR, PROVINCE,CITY ,sales)
VALUES(2008,'河北','承德',31);
INSERT INTO T (YEAR, PROVINCE,CITY ,sales)
VALUES(2008,'陕西','西安',45);
INSERT INTO T (YEAR, PROVINCE,CITY ,sales)
VALUES(2008,'陕西','宝鸡',25);
select b.year,
b.province,
b.city,
b.sales,
sum(b.sales) over(partition by b.year, b.province) 小计,
sum(b.sales) over(partition by b.year) 总合
from T b
select nvl(Year,300),
nvl(Province,'小计'),
nvl(City,'小计'),
sum(Sales)
from T
group by rollup( Year, Province, City )
-------------------------------
select case when year is null then '总计'
when province is null then '合计' when city is null then '小计' else to_char(year) end,
decode(city,null,'',province),city,total
from (
select year,
province,
city,sum(sales) total from t
group by rollup(year,province,city)
)
-----显示结果------------------------------------
1 2007 河北 承德 20
2 2007 河北 石家庄 10
3 小计 30
4 2007 陕西 石家庄 10
5 2007 陕西 西安 30
6 小计 40
7 合计 70
8 2008 河北 承德 23
9 2008 河北 石家庄 34
10 小计 57
11 2008 陕西 宝鸡 56
12 2008 陕西 西安 24
13 小计 80
14 合计 137
15 总计 207
INSERT INTO T (YEAR, PROVINCE,CITY ,sales)
VALUES(2007,'河北','石家庄',10)
INSERT INTO T (YEAR, PROVINCE,CITY ,sales)
VALUES(2007,'河北','承德',13);
INSERT INTO T (YEAR, PROVINCE,CITY ,sales)
VALUES(2007,'陕西','西安',23);
INSERT INTO T (YEAR, PROVINCE,CITY ,sales)
VALUES(2007,'陕西','石家庄',23);
INSERT INTO T (YEAR, PROVINCE,CITY ,sales)
VALUES(2008,'河北','石家庄',35);
INSERT INTO T (YEAR, PROVINCE,CITY ,sales)
VALUES(2008,'河北','承德',31);
INSERT INTO T (YEAR, PROVINCE,CITY ,sales)
VALUES(2008,'陕西','西安',45);
INSERT INTO T (YEAR, PROVINCE,CITY ,sales)
VALUES(2008,'陕西','宝鸡',25);
select b.year,
b.province,
b.city,
b.sales,
sum(b.sales) over(partition by b.year, b.province) 小计,
sum(b.sales) over(partition by b.year) 总合
from T b
select nvl(Year,300),
nvl(Province,'小计'),
nvl(City,'小计'),
sum(Sales)
from T
group by rollup( Year, Province, City )
-------------------------------
select case when year is null then '总计'
when province is null then '合计' when city is null then '小计' else to_char(year) end,
decode(city,null,'',province),city,total
from (
select year,
province,
city,sum(sales) total from t
group by rollup(year,province,city)
)
-----显示结果------------------------------------
1 2007 河北 承德 20
2 2007 河北 石家庄 10
3 小计 30
4 2007 陕西 石家庄 10
5 2007 陕西 西安 30
6 小计 40
7 合计 70
8 2008 河北 承德 23
9 2008 河北 石家庄 34
10 小计 57
11 2008 陕西 宝鸡 56
12 2008 陕西 西安 24
13 小计 80
14 合计 137
15 总计 207
相关文章推荐
- Oracle关于分组小计再合计
- oracle 小计合计之 group by grouping sets
- Oracle 使用分析函数实现小计合计
- 【转】ORACLE制作表时的“小计”和“合计” (ROLLUP)
- oracle group by rollup实现小计、合计
- Oracle关于Group by合计、小计的使用
- Oracle分组扩展函数的使用(主要增加小计及合计金额)
- oracle SQL 星期 算法
- oracle PGA管理(算法)
- 小计和合计报表
- Asp.Net中C#实现的DataGrid小计,合计和纵向合并的通用方法
- 用Oracle用户自定义合计函数来提高代码重用性
- 用SQL实现统计报表中的"小计"与"合计"的方法详解
- 报表演变历史-分组报表-小计合计-其他
- 各个数据库的分页算法,Oracle的intersect和minus运算
- 如何实现比较复杂的分组、小计与合计
- Oracle中三种表连接算法的总结
- Oracle中三种表连接算法的总结
- 模拟退火玄学算法学习小计