# FirstSortedValue - 脚本函数

FirstSortedValue() 将返回来自 value 指定表达式的值，相当于 sort\_weight 参数排序的结果，例如，单价最低的产品名称。排序顺序中的第 n 个值，可在 rank 中指定。如果在指定 rank 下多个结果值共享同一 sort\_weight，则此函数返回 NULL。 排序的值会迭代于 group by 子句定义的大量记录，或者如果 group by 子句未定义，就会在整个数据集之间聚合。

语法：

FirstSortedValue (FirstSortedValue ([ distinctdistinct ] value, sort-weight [, rank ] ] value, sort-weight [, rank ]))

返回数据类型： 双

参数：

参数

| 参数 | 说明 |
| --- | --- |
| value Expression | 此函数用于查找表达式 value 的值，相当于 sort\_weight 的排序结果。 |
| sort-weight Expression | 该表达式包含要排序的数据。找到 sort\_weight 的第一个（最低）值，由 value 表达式的对应值确定。如果在 sort\_weight 前面加一个减号，则此函数会返回最后一个（最高）排序值。 |
| rank Expression | 通过指定一个大于 1 的 rank “n”，您会获得第 n 个排序值。 |
| distinct | 如果在函数参数前出现单词 DISTINCT，则将忽略计算该函数参数生成的副本。 |

示例和结果：

将示例脚本添加到应用程序并运行。然后，至少要将结果列中列出的字段添加到应用程序中的表格才能查看结果。

为了获得与下面结果列相同的外观，在属性面板中，在排序下方，从自动切换到自定义，然后取消选择数字和字母排序。

脚本示例

| 示例 | 结果 |
| --- | --- |
| `Temp:`<br>`LOAD * inline [`<br>`Customer\|Product\|OrderNumber\|UnitSales\|CustomerID`<br>`Astrida\|AA\|1\|10\|1`<br>`Astrida\|AA\|7\|18\|1`<br>`Astrida\|BB\|4\|9\|1`<br>`Astrida\|CC\|6\|2\|1`<br>`Betacab\|AA\|5\|4\|2`<br>`Betacab\|BB\|2\|5\|2`<br>`Betacab\|DD\|12\|25\|2`<br>`Canutility\|AA\|3\|8\|3`<br>`Canutility\|CC\|13\|19\|3`<br>`Divadip\|AA\|9\|16\|4`<br>`Divadip\|AA\|10\|16\|4`<br>`Divadip\|DD\|11\|10\|4`<br>`] (delimiter is '\|');`<br>` `<br>`FirstSortedValue:`<br>`LOAD  Customer,FirstSortedValue(Product, UnitSales) as MyProductWithSmallestOrderByCustomer Resident Temp Group By Customer;<br>` | ` Customer MyProductWithSmallestOrderByCustomer  `<br>`Astrida CC`<br>`Betacab AA`<br>`Canutility AA`<br>`Divadip DD`<br><br>函数将 UnitSales 按从最小到最大的顺序排列，通过UnitSales 的最小值（最小顺序）寻找 Customer 的值。<br><br>因为 CC 与客户 Astrida 的最小顺序（ UnitSales 的值 = 2）对应。AA 与客户 Betacab 的最小顺序 (4) 对应，AA 与客户 Canutility 的最小顺序 (8) 对应，而 DD 与客户 Divadip. 的最小顺序 (10) 对应。 |
| 前提是 Temp 表格像之前的示例一样加载：<br><br>`LOAD  Customer,FirstSortedValue(Product, -UnitSales) as MyProductWithLargestOrderByCustomer Resident Temp Group By Customer;` | ` Customer MyProductWithLargestOrderByCustomer  `<br>`Astrida AA`<br>`Betacab DD`<br>`Canutility CC`<br>`Divadip -`<br><br>减号位于 sort\_weight 参数之首，因此，该函数将最大的排在第一个。<br><br>因为 AA 与客户 Astrida 的最大顺序（UnitSales 的值：18）对应，DD 与客户 Betacab 的最大顺序 (12) 对应，而 CC 与客户 Canutility 的最大顺序 (13) 对应。客户 Divadip 的最大顺序 (16) 有两个相同的值，因此，它会生成空结果。 |
| 前提是 Temp 表格像之前的示例一样加载：<br><br>`LOAD  Customer,FirstSortedValue(distinct Product, -UnitSales) as MyProductWithSmallestOrderByCustomer Resident Temp Group By Customer;` | ` Customer MyProductWithLargestOrderByCustomer  `<br>`Astrida AA`<br>`Betacab DD`<br>`Canutility CC`<br>`Divadip AA`<br><br>这一点与之前的示例相同，使用了 distinct 限定符除外。在该子句中，Divadip 的重复结果会被忽略，从而允许返回非空值。 |