本章介绍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执行取数操作,此时才会真正写出集文件。 |