功能:
将集合拆开,每个元素生成一行。
语法:
扩展 <列表> [用 <列表达式>] [命名 <新列名>][拼接列 {<原列名> [命名 <新列名>]}]
参数:命名
扩展值填入的列名,缺省用列表对应的扩展集合列名。
可选,不可省略参数名。本参数一般与参数列表同时用。
参数:列表
用于生成集合的多种形式中的一种,包括:常数集合、自然数N、可生成集合的计算式、其他表。
必填,省略参数名。
第一种形式:参数列表是常数集合时,假设集合成员数为M,则焦点表的每条记录都扩展出M条,集合成员依次填入指定的列。
示例:
学生表(焦点表)原有2条记录,数据如下:
|
NAME |
CLASS |
|
John |
2 |
|
Emily |
2 |
扩展 ["English"," Math","PE"] 命名 SUBJECT // 用有序集合["English"," Math","PE"]将每条记录扩展成3条,命名为SUBJECT,结果如下:
|
NAME |
CLASS |
SUBJECT |
|
John |
2 |
English |
|
John |
2 |
Math |
|
John |
2 |
PE |
|
Emily |
2 |
English |
|
Emily |
2 |
Math |
|
Emily |
2 |
PE |
第二种形式:参数列表是整数N时,集合是1至N共N个自然数,焦点表的每条记录都扩展出N条,用集合成员依次填入焦点表的学期列。
示例:
扩展 2 命名 SEMESTER //焦点表依然是上面的学生表,用自然数2将每条记录扩展成2条,填入" SEMESTER "列,结果如下:
|
NAME |
CLASS |
SEMESTER |
|
John |
2 |
1 |
|
John |
2 |
2 |
|
Emily |
2 |
1 |
|
Emily |
2 |
2 |
第三种形式:参数列表是可生成集合的表达式时,假设集合成员数为M,则焦点表的每条记录都扩展出M条,集合成员依次填入指定列。
注意,这个表达式是受限的,生成的集合相对固定,不能随焦点表的当前记录而变。
示例:
扩展 (条件(parameter1>2 则 ["Chemistry","Chinese"]; 否则 ["Physics","Math","English"])) 命名 SUBJECT //焦点表为学生表,用表达式(条件(parameter1>2 则 ["Chemistry","Chinese"]; 否则 ["Physics","Math","English"]))将每条记录扩展成多条,假设变量parameter1=3,结果如下:
|
NAME |
CLASS |
SUBJECT |
|
John |
2 |
Chemistry |
|
John |
2 |
Chinese |
|
Emily |
2 |
Chemistry |
|
Emily |
2 |
Chinese |
第四种形式:参数列表是上下文中的其他表时,如果该表有主键,则缺省集合是该表的主键的所有列值,如果该表没有主键,则缺省集合是该表的第1列的所有列值,也可以用参数用指定要取哪一列。假设集合的长度为M,则焦点表的每条记录都扩展出M条,用集合成员依次填入指定列。
示例:
课程表数据如下:
|
SUBJECT |
SID |
|
English |
1 |
|
Math |
2 |
|
PE |
3 |
扩展 课程表 命名 SUBJECT //焦点表是学生表。现在要求把课程表的SUBJECT依次写入学生表的SUBJECT列,结果如下:
|
NAME |
CLASS |
SUBJECT |
|
John |
2 |
English |
|
John |
2 |
Math |
|
John |
2 |
PE |
|
Emily |
2 |
English |
|
Emily |
2 |
Math |
|
Emily |
2 |
PE |
说明:课程表没有主键,所以扩展时缺省用第1列作为扩展集合,即SUBJECT列。
参数:用 <列表达式>
当参数列表是其他表时,本参数指定从该表取哪一列的值作为扩展集合。缺省用参数列表对应表的主键的列值做扩展集合,无主键时用第1列的列值做扩展集合。
可选,不可省略参数名。
示例:
主键为SID的课程明细表数据,如下:
|
SID |
SUBJECT |
TEACHER |
|
1 |
English |
Ashley |
|
2 |
Math |
Megan |
|
3 |
PE |
Victoria |
扩展 课程明细表; 用 SUBJECT; 命名 MYSUBJECT //焦点表是学生表。把课程明细表的SUBJECT作为扩展集合,依次写入学生表的MYSUBJECT列,结果如下:
|
NAME |
CLASS |
MYSUBJECT |
|
John |
2 |
English |
|
John |
2 |
Math |
|
John |
2 |
PE |
|
Emily |
2 |
English |
|
Emily |
2 |
Math |
|
Emily |
2 |
PE |
说明:因为课程明细表中,SUBJECT非主键也不是第1列,所以必须写参数"用 SUBJECT "。
参数:拼接列
当参数列表是其他表时,可将该表其他列拼到焦点表后面。
可选,不可省略参数名,本参数是复合参数,由一对或多对子参数组成,即子参数原列名和子参数命名,每一对参数代表其他表中的一个列。
子参数原列名是其他表中的列名(包括序号列#),将拼到到焦点表上。必填,省略参数名。
子参数命名是将原列名拼接到焦点表之后的新列名。可选,不可省略参数名。默认保持原名。
注意:列表参数也有一个同名的命名子参数,但作用对象不同——列表的命名是给扩展列命名,拼接列的命名是给被拼接的列重命名。
示例:
扩展 课程明细表 命名 SUB_ID; 拼接列 SUBJECT, TEACHER 命名 T_TEACHER //把课程明细表的SID依次写入学生表(焦点表)的SUB_ID列,并把SUBJECT和TEACHER字段拼接到学生表,每条记录扩展成N条,其中,把TEACHER改名为T_TEACHER,返回结果如下:
|
NAME |
CLASS |
SUB_ID |
SUBJECT |
T_TEACHER |
|
John |
2 |
1 |
English |
Ashley |
|
John |
2 |
2 |
Math |
Megan |
|
John |
2 |
3 |
PE |
Victoria |
|
Emily |
2 |
1 |
English |
Ashley |
|
Emily |
2 |
2 |
Math |
Megan |
|
Emily |
2 |
3 |
PE |
Victoria |