# FirstSortedValue 指令碼函數

FirstSortedValue() 從運算式中傳回 value 中指定的值，該值對應於排序 sort\_weight 引數的結果，例如，具有最低單價之產品的名稱。可以在 rank 中指定排序順序中的第 n 個值。如果對於指定的 rank，有多個產生的值共用同一 sort\_weight，則該函數會傳回 NULL。 已排序的值會在許多記錄上反覆運算，如 group by 子句所定義，或者如果未定義任何 group by 子句則在整個資料集上彙總。

語法：

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

傳回的資料類型： 雙值

引數：

引數

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

範例與結果：

將範例指令碼新增至您的應用程式並予以執行。然後，至少將結果資料行中列出的欄位新增至我們應用程式中的工作表以查看結果。

若要取得與下方結果資料行中相同的外觀，請在屬性面板的「排序」下方，從「自動」切換至「自訂」，然後取消選取按數字和字母排序。

指令碼處理範例

| 範例 | 結果 |
| --- | --- |
| `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;<br>` | ` Customer MyProductWithSmallestOrderByCustomer  ` `Astrida CC` `Betacab AA` `Canutility AA` `Divadip DD`<br><br>此函數會將 UnitSales 從最小到最大排序，尋找 Customer 的值，其中 UnitSales 的值最小，即最小順序。<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  ` `Astrida AA` `Betacab DD` `Canutility CC` `Divadip -`<br><br>負號位於 sort\_weight 引數之前，因此此函數會先排序最大的。<br><br>因為 AA 對應於客戶 Astrida 的最大順序 (UnitSales 的值：18)，DD 對應於客戶 Betacab 的最大順序 (12)，並且 CC 對應於客戶 Canutility 的最大順序 (13)。客戶 Divadip 的最大順序 (16) 具有兩個相同的值，因此這會產生 Null 值結果。 |
| 假設 Temp 表格已如前一個範例中所示載入：<br><br>`LOAD  Customer,FirstSortedValue(distinct Product, -UnitSales) as MyProductWithSmallestOrderByCustomer Resident Temp Group By Customer;` | ` Customer MyProductWithLargestOrderByCustomer  ` `Astrida AA` `Betacab DD` `Canutility CC` `Divadip AA`<br><br>這與先前的範例相同，已使用 distinct 限定詞的除外。這會導致忽略 Divadip 的重複結果，允許傳回非 Null 值。 |