电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

在报表视图中实现分类显示


发布日期:2023/7/27
 

前言

在实现用户的报表过程中用户经常会提出一个看似很合符情理的要求但实现起来却困难重重如下

收款明细表<省略其它字段>

数据样式

日期收款金额

报表样式

日期收款金额

<Null> <没有值与上一笔记录相同日期为>

<Null> <没有值与上一笔记录相同日期为>

实现思路

利用OVER函数算出当前记录在记录集中出现的次数如果次数大于则不返回NULL

实例演练

测试环境

Drop Table Test_ReRecord;

create table Test_ReRecord

(

BillDateDate not null

Money Number() Not Null

)

/

Insert Into Test_ReRecord

Values

(

To_Date(yyyymmdd)

);

Insert Into Test_ReRecord

Values

(

To_Date(yyyymmdd)

);

Insert Into Test_ReRecord

Values

(

To_Date(yyyymmdd)

);

Insert Into Test_ReRecord

Values

(

To_Date(yyyymmdd)

);

Insert Into Test_ReRecord

Values

(

To_Date(yyyymmdd)

);

Commit;

SELECT语句讲释

SELECT

DECODE(RNBillDate) BillDate 如果BillDate在原始记录集中出现超过则显示空值

Money

From

(

SELECT

BillDate

Money

ROW_NUMBER() 通过OVER函数返回相同的BillDate当前出现的次数

OVER

(

Partition By BillDate 根据BillDate进行分区即遇到不同的BillDateRow_Number就恢复从开始计数

Order By BillDate 根据BillDate进行排序一般配合Partition By子项使用

) RN

FROM

Test_ReRecord

);

上一篇:增加系统效率的心得

下一篇:实战管理联机日志