SORT 命令
概念信息
基于指定的键域将 Analytics 表中的记录按升序或降序排序。结果被输出到一个新的物理重排序的 Analytics 表。
语法
SORT {<ON> 键域 <D> <...n>|<ON> ALL <EXCLUDE 域名称 <...n>>} <FIELDS 域名称 <AS 新域名称> <...n>|FIELDS ALL> <关联表名称.ALL <...n>> <EXCLUDE 域名称 <...n>> TO 表名称 <LOCAL> <IF 测试> <WHILE 测试> <FIRST 范围|NEXT 范围> <APPEND> <OPEN> <ISOLOCALE 区域设置代码>
参数
| 名称 | 描述 |
|---|---|
| ON 键域 D <...n> | ON ALL |
要用于排序的一个或多个键域或表达式。 可按任意类型的域进行排序,其中包括计算域和临时表达式,而无论数据类型是什么。
|
| EXCLUDE 域名称 可选 |
仅在使用 ON ALL 排序时有效。 要从该命令中排除的一个或多个域。EXCLUDE 使您可以通过排除指定的域优化 ON ALL。 EXCLUDE 必须紧跟在 ON ALL 后面。例如: ON ALL EXCLUDE 域 1 域 2 |
|
FIELDS 域名称 <...n> | FIELDS ALL 可选 |
说明 键域被自动包括在输出表中,而不需要使用 FIELDS 指定。 要包括在输出中的域:
提示 如果您只需要某个记录中包含的一部分数据,请不要将所有域或整个记录包括在排序的输出表中。请仅选择您需要的域,这在大多数情况下都会提高排序速度。 |
|
AS 新域名称 可选 |
仅在使用 FIELDS 时有效。 输出表中的域的新物理名称和显示名称(备选列标题)。 显示名称中会保留指定的特殊字符或空格,然后在表布局的物理域名称中会自动转换为下划线 ( _ )。 请将新的域名称指定为带引号的字符串。如果您希望显示名称包含换行符,请在单词之间使用分号 (;)。 说明 AS 仅在输出至新表时有效。如果您要附加到现有表,则现有表中的物理域名称和显示名称优先。 |
| 关联表名称.ALL 可选 |
使用指定的关联表中的所有域。 |
| EXCLUDE 域名称 可选 |
仅在使用 FIELDS ALL 或关联表名称.ALL 时,才会有效。 要从该命令中排除的一个或多个域。EXCLUDE 让您可以通过排除指定的域,来调整 ALL 关键字。 如果要添加源自一个或多个相关表的字段,则 EXCLUDE 必须紧跟在 FIELDS ALL 之后,或 ALL 关键字最后一次出现的位置之后。例如: FIELDS ALL EXCLUDE 域 1 域 2 FIELDS ALL 关联表名称.ALL EXCLUDE 域 1 域 2 |
| TO 表名 |
要将命令结果发送到的位置:
|
| LOCAL 可选 |
请将输出文件保存在与 Analytics 项目相同的位置。 说明 仅当针对服务器表运行该命令并且输出文件为 Analytics 表时适用。 LOCAL 参数必须紧跟在 TO 参数后面。 |
| IF 测试 可选 |
一个条件表达式,它必须为真以便处理每个记录。仅对满足条件的那些记录执行该命令。 说明 在应用任何范围参数(WHILE、FIRST、NEXT)之后,仅针对表中的剩余记录评估 IF 条件。 |
| WHILE 测试 可选 |
一个条件表达式,它必须为真以便处理每个记录。该命令被一直执行到条件的计算结果为假或者到达表的末尾为止。 说明 如果您将 WHILE 与 FIRST 或 NEXT 结合使用,请在达到一个限制时立即记下处理步骤。 |
| FIRST 范围 | NEXT 范围 可选 |
要处理的记录数:
请使用范围指定要处理的记录数。 如果您省略 FIRST 和 NEXT,则会默认处理所有记录。 |
|
APPEND 可选 |
将命令输出附加到现有文件的末尾,而不是覆盖现有文件。 说明 您必须确保命令输出的结构和现有文件完全相同:
Analytics 将输出附加到现有文件,而无论其结构如何。如果输出的结构和现有文件不匹配,则可能生成混乱的、不完整的或不准确的数据。 |
|
OPEN 可选 |
打开该表并向该表应用索引。 |
|
ISOLOCALE 区域设置代码 可选 |
说明 仅在 Unicode 版 Analytics 中可用。 采用语言_国家/地区格式的系统区域设置。例如,要使用加拿大法语,请输入 fr-ca。 使用以下代码:
如果您不使用 ISOLOCALE,则会使用默认系统区域设置。 |
示例
按单个域排序,输出整个记录
您想要按产品编号对 Inventory 样例表中的记录进行排序。排序后的记录被提取到一个名为 Inventory_Product_Number 的新 Analytics 表中。
整个记录都被包括在输出表中:
SORT ON ProdNo TO "Inventory_Product_Number"
要从默认的升序排序顺序切换到降序排序顺序,您需要在键域名称后面添加 D:
SORT ON ProdNo D TO "Inventory_Product_Number"
按单个域排序,输出域的子集
您想要按产品编号对 Inventory 样例表中的记录进行排序。只有键域和指定的非键域被提取到一个名为 Inventory_Quantity_on_Hand 的新 Analytics 表。
第三个非键域 QtyOH 在输出表中被赋予的显示名称为 Qty on Hand,在输出表中被赋予的物理域名称为 Qty_on_Hand:
SORT ON ProdNo FIELDS ProdDesc ProdStat QtyOH AS "Qty on Hand" TO "Inventory_Quantity_on_Hand"
按单个域排序,输出所有域
您想要按产品编号对 Inventory 样例表中的记录进行排序。所有域被提取到一个名为 Inventory_Product_Number 的新 Analytics 表中。
使用 FIELDS ALL 和输出整个记录之间的区别在于,FIELDS ALL 会将源表中的任何计算域转换为输出表中的物理域,并且用实际的计算值填充这些域:
SORT ON ProdNo FIELDS ALL TO "Inventory_Product_Number"
按多个域排序(嵌套排序)
您想要依次按地点、产品类别、产品编号对 Inventory 样例表中的记录进行排序。排序后的记录被提取到一个名为 Inventory_Location_Class_Number 的新 Analytics 表中。
SORT ON Location ProdCls ProdNo TO "Inventory_Location_Class_Number"
使用相关域进行排序
您想要按下列域对 Ap_Trans 样例表中的记录进行排序:
- 供应商所在州(相关 Vendor 表)
- 供应商所在城市(相关 Vendor 表)
- 供应商编号(Ap_Trans 表)
所有三个键域和指定的非键域(包括相关域 Vendor.Vendor_Name)都被提取到一个名为 Ap_Trans_State_City 的新 Analytics 表中:
SORT ON Vendor.Vendor_State Vendor.Vendor_City Vendor_No FIELDS Vendor.Vendor_Name Invoice_No Invoice_Date Invoice_Amount Prodno Quantity Unit_Cost TO "Ap_Trans_State_City"
备注
有关此命令工作方式的详细信息,请参见排序记录。
SORT 命令使用的排序顺序
SORT 命令使用排序顺序选项(工具 > 选项 > 表)中指定的任何排序顺序。默认排序顺序如下所示。
有关详细信息,请参见“排序顺序”选项和排序顺序。
|
Analytics 版本 |
默认排序顺序 |
关联排序顺序 |
|---|---|---|
|
非 Unicode |
系统默认 (ASCII) |
先是数字,再是大写字母,然后是小写字母: 0, 1, 2... A, B, C... a, b, c... 例如,“Z”排在“a”之前。 |
|
Unicode |
混合语言 (UCA) (Unicode 排序算法) |
先是数字,然后是小写字母和大写字母相互混合: 0, 1, 2... a, A, b, B, c, C... 例如,“a”排在“Z”之前。 |
区分大小写
SORT 区分大小写。根据您使用的 Analytics 的版本的不同(非 Unicode 或者 Unicode),字符串中的大小写可能影响排序。
如果您不希望大小写影响排序,您可以将 UPPER( ) 函数与 SORT 结合使用:
SORT ON UPPER(键域) TO "Sorted_Table"
按相关域进行排序
您可以按相关域排序,并且将相关域包括为排序输出表中的非键域。要在 SORT 命令中引用相关域,请指定子表名称.域名称。
固定长度与可变长度数据文件
SORT 命令对固定长度和可变长度数据文件均适用。