原贴地址:http://qiqeloveyou.blogbus.com/logs/28574615.html
版权声明 :转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://qiqeloveyou.blogbus.com/logs/28574615.html
Collect语句镶嵌在 select---endselect 之中使用 , 在 报表开发中经常用到 , 作用是根据 table 的 unique key, 把表中其他的字段进行自动的累加 , 一般用在对某些数据进行总 数统计的时候 .
举例如下:
data:begin of mytable,
keyfield like XXX,
fliedl1 like XXX,
field2 like XXX,
end of mytable.
Data: mytable_col like hashed table of mytable
With unique key keyfield with headline.
select keyfield fliedl1 field2 from table_system
into (mytable- keyfield, mytable-fliedl1, mytable- field2).
Collect mytable into mytable_col.
Endselect.
这个例子的作用是以 keyfield 为主键 , 把 fliedl1 和 fliedl2 的 数据进行累加 , 计算属于每个 keyfield 的 fliedl1 和 fliedl1 的 总和 .
Collect 使 用有两个条件 :
<!--[if !supportLists]-->1. <!--[endif]-->累 加时送入的表必须时 hashed table 或者 sorted table, 即必须拥有唯一的 key.
<!--[if !supportLists]-->2. <!--[endif]-->除了 key 之 外的其他属性必须时数字型的 , 才能进行累加计算 .
当然 mytable 和 mytable_col. 的 表的类型必须完全一致 .
一般的报表在生成时都 需要对大量的数据进行计算 , 这时使用 collect 语 句的好处就是不用在把数据取到本地后再 loop 进行累加 , 降 低报表对系统的压力 .