FirstSortedValue - Skriptfunktion

FirstSortedValue() gibt den Wert der in value festgelegten Formel zurück, der dem Ergebnis der Sortierung des sort_weight-Arguments entspricht, z. B. der Name des Produkts mit dem niedrigsten Preis pro Einheit. Der n-te-Wert in der Sortierreihenfolge kann in rank festgelegt werden. Weist mehr als ein Ergebnis dasselbe Feld sort_weight für die festgelegte Funktion rank auf, gibt die Funktion NULL zurück. Die sortierten Werte werden über eine Reihe von Datensätzen iteriert, wie von einer group by-Bedingung definiert, oder über einen kompletten Datensatz aggregiert, wenn keine group by-Bedingung definiert ist.

Syntax:  

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

Return data type: dual

Arguments:  

Argument Beschreibung
value Expression Die Funktion findet den Wert der Formel value, der dem Ergebnis der Sortierung von sort_weight entspricht.
sort-weight Expression Die Formel mit den Daten, die sortiert werden sollen. Der erste (niedrigste) Wert von sort_weight wird gefunden, aus dem der entsprechende Wert der Formel value bestimmt wird. Wenn Sie ein Minuszeichen vor sort_weight voranstellen, liefert die Funktion stattdessen den letzten (höchsten) sortierten Wert.
rank Expression

Durch rank "n" größer 1 wird der n-te Wert ausgegeben.

distinct

Der Zusatz DISTINCT vor den Funktionsargumenten bewirkt, dass bei der Auswertung der Funktionsargumente entstehende Duplikate nicht berücksichtigt werden.

Examples and results:  

Fügen Sie Ihrer App ein Beispielskript hinzu und führen Sie dieses aus. Fügen Sie einem Arbeitsblatt in unserer App dann mindestens diejenigen Felder hinzu, die in der Ergebnisspalte aufgeführt sind, um das Ergebnis anzuzeigen.

Damit die Anzeige genauso wie in der unteren Ergebnisspalte aussieht, schalten Sie im Eigenschaftsfenster unter "Sortierung" von "Auto" auf "Benutzerdefiniert" um und heben Sie anschließend die numerische und alphabetische Sortierung auf.

Beispiel Ergebnis

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

Die Funktion sortiert UnitSales von klein nach groß, auf der Suche nach dem Customer-Wert mit dem kleinsten UnitSales-Wert, die kleinste Bestellung.

Da sich CC auf die kleinste Bestellung bezieht (UnitSales= 2) für Kunde Astrida. AA entspricht der kleinsten Bestellung (4) für Kunde Betacab, CC entspricht der kleinsten Bestellung (8) für Kunde Canutility und DD der kleinsten Bestellung (10) für Kunde Divadip..

Vorgabe: Die Tabelle Temp wird wie im vorherigen Beispiel geladen:

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

Customer MyProductWithLargestOrderByCustomer

Astrida AA

Betacab DD

Canutility CC

Divadip -

Dem sort_weight-Argument geht ein Minuszeichen voran, weshalb die Funktion zuerst die größten Werte sortiert.

Da AA der größten Bestellung (Wert von UnitSales:18) für Kunde Astrida, DD der größten Bestellung (12) für Kunde Betacab und CC der größten Bestellung (13) für Kunde Canutility entspricht. Für die größte Bestellung (16) für Kunde Divadip gibt es zwei identische Werte, weshalb NULL ausgegeben wird.

Vorgabe: Die Tabelle Temp wird wie im vorherigen Beispiel geladen:

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

Customer MyProductWithLargestOrderByCustomer

Astrida AA

Betacab DD

Canutility CC

Divadip AA

Dies entspricht dem vorigen Beispiel, außer dass der distinct-Zusatz verwendet wird. Das führt zu einer Ignorierung des duplizierten Ergebnisses für Divadip, wodurch ein Wert, der nicht gleich NULL ist, ausgegeben wird.