描述:
管道中附加指引字段切换动作后返回原管道。
ch.switch(Fi,Ai:x;…)
备注:
管道ch中附加计算,将Fi字段值切换为Ai的记录,返回原管道ch。
x为Ai的主键或逻辑主键,匹配条件为Fi等于x。默认情况下,Fi找不到Ai可匹配的记录时显示为空。
参数:
ch |
管道。 |
Fi |
ch中的字段。 |
Ai |
序表/排列。 |
x |
Ai的主键或逻辑主键,如果Ai设置了主键为x,则参数x可以省略。 |
选项:
@i |
过程中找不到任何Fi对应值则删除该记录。 |
@d |
与@i相反,只保留找不到的记录。 |
@1 |
ch中某条记录的Fi值在Ai中找不到,则生成一条Ai结构的记录,主键值设为x。注意是数字1。 |
返回值:
管道
示例:
x为Ai的主键:
|
A |
|
1 |
=demo.cursor("SELECT top 10 EID,DEPT,NAME FROM EMPLOYEE") |
返回游标,数据内容如下: |
2 |
=demo.query("SELECT DEPT,MANAGER FROM DEPARTMENT").keys(DEPT) |
返回DEPT为键的序表: |
3 |
=channel() |
创建管道。 |
4 |
=A3.switch(DEPT,A2) |
管道附加计算,将DEPT的字段值切换为指引字段指向A2的记录,DEPT是A2的键,所以参数x可省略,返回到A3管道。 |
5 |
=A4.fetch() |
执行结果集函数,保留管道当前数据。 |
6 |
=A1.push(A3) |
将A1游标中的数据推送到管道,此时数据不会立即被推送到管道; |
7 |
=A1.skip() |
A1游标执行取数动作,此时数据才会被推送到管道,然后管道执行计算并记录结果。 |
8 |
=A3.result() |
获取管道计算结果: |
x非Ai的主键或逻辑主键:
|
A |
|
1 |
=demo.cursor("SELECT top 10 EID,DEPT,NAME FROM EMPLOYEE") |
返回游标,数据内容如下: |
2 |
=demo.query("SELECT top 6 DEPT,MANAGER FROM DEPARTMENT") |
返回序表: |
3 |
=channel(A1) |
创建管道并将A1游标中的数据推送到管道,此时数据不会立即被推送到管道。 |
4 |
=A3.switch(DEPT,A2:DEPT) |
管道附加计算,将DEPT字段匹配序表A2中对应的DEPT字段值,无法匹配则显示为空,返回到A3管道。 |
5 |
=A4.fetch() |
执行结果集函数,保留管道当前数据。 |
6 |
=A1.skip() |
A1游标执行取数动作,此时数据才会被推送到管道,然后管道执行计算并记录结果。 |
7 |
=A3.result() |
获取管道计算结果: |
使用@i选项,字段不匹配的记录直接删除:
|
A |
|
1 |
=demo.cursor("SELECT top 10 EID,DEPT,NAME FROM EMPLOYEE") |
返回游标,数据内容如下: |
2 |
=demo.query("SELECT top 6 DEPT,MANAGER FROM DEPARTMENT") |
返回序表: |
3 |
=channel(A1) |
创建管道并将A1游标中的数据推送到管道,此时数据不会立即被推送到管道。 |
4 |
=A3.switch@i(DEPT,A2:DEPT) |
管道附加,将DEPT字段匹配序表A2中对应的DEPT字段值,使用@i选项,无法匹配则删除整条记录,返回到A3管道。 |
5 |
=A4.fetch() |
执行结果集函数,保留管道当前数据。 |
6 |
=A1.skip() |
A1游标执行取数动作,此时数据才会被推送到管道,然后管道执行计算并记录结果。 |
7 |
=A3.result() |
获取管道计算结果: |
使用@d选项,与@i相反,只保留匹配不到的记录:
|
A |
|
1 |
=demo.cursor("SELECT top 10 EID,DEPT,NAME FROM EMPLOYEE") |
返回游标,数据内容如下: |
2 |
=demo.query("SELECT top 6 DEPT,MANAGER FROM DEPARTMENT") |
返回序表: |
3 |
=channel(A1) |
创建管道并将A1游标中的数据推送到管道,此时数据不会立即被推送到管道。 |
4 |
=A3.switch@i(DEPT,A2:DEPT) |
管道附加,将DEPT字段匹配序表A2中对应的DEPT字段值,使用@d选项,只保留匹配不到的记录,返回到A3管道。 |
5 |
=A4.fetch() |
执行结果集函数,保留管道当前数据。 |
6 |
=A1.skip() |
A1游标执行取数动作,此时数据才会被推送到管道,然后管道执行计算并记录结果。 |
7 |
=A3.result() |
获取管道计算结果: |
使用@1选项:
|
A |
|
1 |
=demo.cursor("SELECT top 10 EID,DEPT,NAME FROM EMPLOYEE") |
返回游标,数据内容如下: |
2 |
=demo.query("SELECT top 6 DEPT,MANAGER FROM DEPARTMENT") |
返回序表: |
3 |
=channel(A1) |
创建管道并将A1游标中的数据推送到管道,此时数据不会立即被推送到管道。 |
4 |
=A3.switch@i(DEPT,A2:DEPT) |
管道附加,将DEPT字段匹配序表A2中对应的DEPT字段值,使用@1选项,匹配不到时则生成一条A2结构的记录,返回到A3管道。 |
5 |
=A4.fetch() |
执行结果集函数,保留管道当前数据。 |
6 |
=A1.skip() |
A1游标执行取数动作,此时数据才会被推送到管道,然后管道执行计算并记录结果。 |
7 |
=A3.result() |
获取管道计算结果: |