本章介绍groupn()函数的多种用法。
描述:
将游标记录分组后,推入管道序列中的管道。
语法:
cs.groupn(x;C)
备注:
把cs游标记录根据x分组后,推入管道序列C中的管道,结果返回原游标cs。
参数:
| cs | 游标记录。 | 
| x | 分组表达式。 | 
| C | 管道序列。 | 
返回值:
游标
示例:
| 
 | A | 
 | 
| 1 | =demo.cursor("select NAME,GENDER,DEPT,BIRTHDAY from EMPLOYEE") | 
 | 
| 2 | =channel() | 创建管道。 | 
| 3 | =channel() | 创建管道。 | 
| 4 | =A1.groupn(if(GENDER=="F",1,2);[A2,A3]) | 将游标记录分组,GENDER值为F为一组推送到管道A2中,其余的记录分为另一组推送到管道A3中。 | 
| 5 | =A2.fetch() | 保留管道当前数据。 | 
| 6 | =A3.fetch() | 保留管道当前数据。 | 
| 7 | =A1.fetch() | 
 | 
| 8 | =A2.result() | 获取管道A2计算结果: 
 | 
| 9 | =A3.result() | 获取管道A3计算结果: 
 | 
描述:
将管道中的记录分组后,推入管道序列中的管道。
语法:
ch.groupn(x;C)
备注:
参数:
| ch | 管道。 | 
| x | 分组表达式。 | 
| C | 管道序列。 | 
返回值:
管道
示例:
| 
 | A | 
 | 
| 1 | =demo.cursor("select NAME,GENDER,DEPT,BIRTHDAY from EMPLOYEE") | 
 | 
| 2 | =channel(A1) | 将游标记录推入管道,结果返回管道。 | 
| 3 | =channel() | 创建管道。 | 
| 4 | =channel() | 创建管道。 | 
| 5 | =A2.groupn(if(GENDER=="F",1,2);[A3,A4]) | 将管道A2中的记录分组,GENDER值为F为一组推送到管道A3中,其余的记录分为另一组推送到管道A4中。 | 
| 6 | =A3.fetch() | A3管道附加结果集函数ch.fetch(),保留管道A3的当前数据。 | 
| 7 | =A4.fetch() | A4管道附加结果集函数ch.fetch(),保留管道A4的当前数据。 | 
| 8 | =A1.fetch() | 
 | 
| 9 | =A3.result() | 获取管道A3计算结果: 
 | 
| 10 | =A4.result() | 
 | 
描述:
游标附加记录分组动作后返回原游标,并把分组子集写入集文件。
cs.groupn(x;F)
备注:
游标cs附加计算,cs的记录根据x分组,分组子集分别写入集文件序列F中,返回原游标cs。
该函数属于延迟计算函数。
参数:
| cs | 游标。 | 
| x | 分组表达式。 | 
| F | 集文件对象序列。 | 
返回值:
游标
| 
 | A | 
 | 
| 1 | =demo.cursor("select NAME,GENDER,DEPT,BIRTHDAY from EMPLOYEE") | 返回游标。 | 
| 2 | =[file("f_dept.btx"),file("m_dept.btx")] | 集文件对象序列。 | 
| 3 | =A1.groupn(if(GENDER=="F",1,2);A2) | 游标A1附加计算,将GENDER值为F的记录分到第1组,其余的记录分到第2组,并将分组子集写入到对应顺序的集文件中,返回A1游标。 | 
| 4 | =A1.skip() | A1游标执行取数动作后,才会真正写出集文件。 | 
描述:
虚表中定义记录分组操作,将分组子集写入集文件。
语法:
T.groupn(x;F)
备注:
虚表T中定义计算,T的记录根据x分组,将分组子集分别写入集文件序列F中,返回新虚表。
参数:
| T | 虚表。 | 
| x | 分组表达式。 | 
| F | 
虚表
示例:
| 
 | A | 
 | 
| 1 | =create(file).record(["empAll.ctx"]) | 
 | 
| 2 | =pseudo(A1) | 由组表生成虚表。 | 
| 3 | =[file("f_dept.btx"),file("m_dept.btx")] | 返回集文件对象序列。 | 
| 4 | =A2.groupn(if(GENDER=="F",1,2);A3) | 虚表A2中定义计算,将GENDER值为F的记录分到第1组,其余的记录分到第2组,并将分组子集写入到对应的集文件中。 | 
| 5 | =A4.cursor().fetch() | 虚表A4执行取数操作,此时才会真正写出集文件。 |