# FirstSortedValue - 指令碼函數

FirstSortedValue() 會傳回在 value (對應於 sort\_weight 引數的排序結果) 中指定的運算式的值，並考慮到 rank (若已指定)。如果多個結果值對指定的 rank 共用同一個 sort\_weight，函數會傳回 NULL。

排序值會在由 group by 子句所定義的若干記錄上反覆運算；若未定義 group by 子句，則會彙總完整的資料設定。

語法：

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

傳回的資料類型： 雙值

引數：

FirstSortedValue 引數

| 引數 | 描述 |
| --- | --- |
| value Expression | 該函數會找出對應於 sort\_weight 排序結果的 value 運算式的值。 |
| sort-weight Expression | 包含待排序資料的運算式。會找出 sort\_weight 的第一個 (最低) 值，可從中決定 value 運算式的對應值。如果在 sort\_weight 前面加上減號，則函數會傳回最後一個 (最高) 排序值。 |
| rank Expression | 表示 rank "n" 大於 1 之後，將取得第 n 個排序的值。 |
| distinct | 如果 DISTINCT 這個字出現在函數引數之前，會忽略評估函數引數所產生的重複項目。 |

範例與結果：

新增範例指令碼到您的文件中並加以執行。然後至少將結果資料行中所列的欄位新增至我們文件中的工作表，以查看結果。

範例 1:

`Temp:`

`LOAD * inline [` `Customer|Product|OrderNumber|UnitSales|CustomerID` `Astrida|AA|1|10|1` `Astrida|AA|7|18|1` `Astrida|BB|4|9|1` `Astrida|CC|6|2|1` `Betacab|AA|5|4|2` `Betacab|BB|2|5|2` `Betacab|DD|12|25|2` `Canutility|AA|3|8|3` `Canutility|CC|13|19|3` `Divadip|AA|9|16|4` `Divadip|AA|10|16|4` `Divadip|DD|11|10|4` `] (delimiter is '|');` ` ` `FirstSortedValue:` `LOAD  Customer,FirstSortedValue(Product, UnitSales) as MyProductWithSmallestOrderByCustomer Resident Temp Group By Customer;
`

範例 1 結果

| 結果欄位 (客戶) | 結果值 (MyProductWithSmallestOrderByCustomer) |
| --- | --- |
| Astrida | CC |
| Betacab | AA |
| Canutility | AA |
| Divadip | DD |

該函數將 UnitSales 從最小到最大排序，尋找具有最小 UnitSales 值、最小順序的 Customer 值。

因為 CC 對應於客戶 Astrida 的最小順序 (UnitSales 的值=2)。AA 對應於客戶 Betacab 的最小順序 (4)，AA 對應於客戶 Canutility 的最小順序 (8)，並且 DD 對應於客戶 Divadip 的最小順序 (10)。

範例 2:

假設 Temp 表格已如前一個範例中所示載入：

`LOAD  Customer,FirstSortedValue(Product, -UnitSales) as MyProductWithLargestOrderByCustomer Resident Temp Group By Customer;`

範例 2 結果

| 結果欄位 (客戶) | 結果值 (MyProductWithLargestOrderByCustomer) |
| --- | --- |
| Astrida | AA |
| Betacab | DD |
| Canutility | CC |
| Divadip | - |

減號位於 sort\_weight 前面，因此函數將最大的排在最前面。

因為 AA 對應於客戶 Astrida 的最大順序 (UnitSales 的值：18)，DD 對應於客戶 Betacab 的最大順序 (12)，並且 CC 對應於客戶 Canutility 的最大順序 (13)。客戶 Divadip 的最大順序 (16) 具有兩個相同的值，因此這會產生 Null 值結果。

範例 3:

假設 Temp 表格已如前一個範例中所示載入：

`LOAD  Customer,FirstSortedValue(distinct Product, -UnitSales) as MyProductWithSmallestOrderByCustomer Resident Temp Group By Customer;`

範例 3 結果

| 結果欄位 (客戶) | 結果值 (MyProductWithLargestOrderByCustomer) |
| --- | --- |
| Astrida | AA |
| Betacab | DD |
| Canutility | CC |
| Divadip | AA |

這與先前的範例相同，已使用 distinct 限定詞的除外。這會導致忽略 Divadip 的重複結果，允許傳回非 Null 值。