闲了几天总算是有活干了,接到上级分配的任务,利用水晶报表做几个图形报表。做图形是没什么大难度,已经很熟悉水晶报表的使用了,非常容易完成;关键是在查询语句那,非常耗时间,还要核对查询出的结果是否准确。
通过两天的努力,四张图形的大体效果已经出来了,但是有一张图形的查询语句有点难度,X轴是需要本年度月份数据,Y轴的数据需要某一列按月累加的值。之前做过查询小计、合计、总计的语句,但是这个还是头一次遇到,通过搜索忽然间发现Oracle提供 SUM 的聚合函数可以实现。
select sum(列名)over(partition by 累加条件列 group by 分组列1,分组列2……) total from 表;
立刻自己在数据库里创建了一张表,学习试验此方法:
1
Create
Table
product(
2 Id Number ( 9 ),
3 pro_name VARCHAR2 ( 50 ),
4 pro_date Date,
5 year_mon VARCHAR2 ( 12 ),
6 oil Number ( 9 ),
7 gas Number ( 9 ),
8 water Number ( 9 )
9 )
2 Id Number ( 9 ),
3 pro_name VARCHAR2 ( 50 ),
4 pro_date Date,
5 year_mon VARCHAR2 ( 12 ),
6 oil Number ( 9 ),
7 gas Number ( 9 ),
8 water Number ( 9 )
9 )
查询语句如下:
代码
1
Select
t.Pro_Name,
2 t.Year_Mon YM,
3 Substr(t.Year_Mon, 1 , 4 ) Y,
4 t.oil,
5 Sum (t.oil) over (Partition By Substr(t.Year_Mon, 1 , 4 ) Order By Substr(t.Year_Mon, 1 , 4 ),t.Year_Mon) total
6 From Product t
2 t.Year_Mon YM,
3 Substr(t.Year_Mon, 1 , 4 ) Y,
4 t.oil,
5 Sum (t.oil) over (Partition By Substr(t.Year_Mon, 1 , 4 ) Order By Substr(t.Year_Mon, 1 , 4 ),t.Year_Mon) total
6 From Product t
结果如下:
个人觉得这个方法还是挺不错的,应该会在更多的地方应用到,比如:可以看到一年中每个月产量完成情况……
如果大家还有其它什么好的方法,希望能指点交流,共同学习~~~