扩展

阅读(268) 标签: 扩展, 拼接列, 集合,

功能:

将集合拆开,每个元素生成一行。

语法:

扩展 <列表> [用 <列表达式>] [命名 <新列名>][拼接列 {<原列名> [命名 <新列名>]}]

参数:命名

扩展值填入的列名,缺省用列表对应的扩展集合列名。

可选,不可省略参数名。本参数一般与参数列表同时用。

参数:列表

用于生成集合的多种形式中的一种,包括:常数集合、自然数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