FirstSortedValue - 指令碼函數

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

Syntax:  

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

Return data type: 雙值

Arguments:  

引數 描述
value Expression 函數找到對應於 sort_weight 之排序結果的運算式 value 的值。
sort-weight Expression 包含待排序之資料的運算式。會找到 sort_weight 的第一個 (最低) 值,從中判定 value 運算式的對應值。如果您在 sort_weight 前面放置一個負號,則該函數會改為傳回最後一個 (最高) 的已排序值。
rank Expression

透過指明 rank "n" 大於 1,可取得第 n 個已排序的值。

distinct

如果 DISTINCT 這個字出現在函數引數之前,會忽略評估函數引數所產生的重複項目。

Examples and results:  

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

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

範例 結果

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;

Customer MyProductWithSmallestOrderByCustomer

Astrida CC

Betacab AA

Canutility AA

Divadip DD

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

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

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

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

Customer MyProductWithLargestOrderByCustomer

Astrida AA

Betacab DD

Canutility CC

Divadip -

減號位於 sort_weight 引數前面,因此函數將最大的排在最前面。

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

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

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

Customer MyProductWithLargestOrderByCustomer

Astrida AA

Betacab DD

Canutility CC

Divadip AA

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