Gibt eine durch Begrenzer-Zeichenfolgen getrennte Liste von Werten für jede Zeile in einer Gruppe zurück.
LIST( [ALL | DISTINCT ] Zeichenfolgenausdruck [, Begrenzer-Zeichenfolge ] [ ORDER BY order-by-Ausdruck [ ASC | DESC ], ... ] )
Zeichenfolgenausdruck Ein Zeichenfolgenausdruck, normalerweise ein Spaltenname. Wenn ALL angegeben ist (der Standardwert) wird für jede Zeile der Gruppe der Wert von Zeichenfolgenausdruck zur Ergebniszeichenfolge hinzugefügt, wobei die Werte durch Begrenzer_Zeichenfolge getrennt werden. Wenn DISTINCT angegeben wurde, werden nur eindeutige Zeichenfolgenausdruck-Werte hinzugefügt.
Begrenzer-Zeichenfolge Eine Trennzeichenfolge für die Listeneinträge. Die Standardeinstellung ist ein Komma. Wenn NULL oder eine leere Zeichenfolge angegeben wird, gibt es keinen Begrenzer. Die Begrenzer-Zeichenfolge muss eine Konstante sein.
order_by_Ausdruck Die von der Funktion zurückgegebenen Elemente sortieren. Vor diesem Argument steht kein Komma, damit ist es einfacher einzusetzen, falls keine Begrenzer-Zeichenfolge angegeben wurde.
order-by-Ausdruck kann kein Ganzzahlenliteral sein. Er kann aber eine Variable sein, die einen Ganzzahlenliteral enthält.
Wenn eine ORDER BY-Klausel Konstanten enthält, werden diese vom Optimierer interpretiert und dann durch eine entsprechende ORDER BY-Klausel ersetzt. Der Optimierer interpretiert z.B. "ORDER BY 'a'" als ORDER BY-Ausdruck.
Ein Abfrageblock mit mehr als einer Aggregatfunktion mit gültigen ORDER BY-Klauseln kann ausgeführt werden, wenn die ORDER BY-Klauseln logisch in einer einzigen ORDER BY-Klausel kombiniert können werden. Zum Beispiel sind folgende Klauseln vorhanden:
ORDER BY expression1, 'a', expression2 |
ORDER BY expression1, 'b', expression2, 'c', expression3 |
Sie werden in der folgenden Klausel zusammengefasst:
ORDER BY expression1, expression2, expression3 |
Die LIST-Funktion gibt die Verkettung (mit Begrenzern) aller Nicht-NULL-Werte für X für jede Zeile der Gruppe zurück. Wenn in der Gruppe nicht wenigstens eine Zeile mit einem definierten X-Wert existiert, gibt LIST(X) eine leere Zeichenfolge zurück.
NULL-Werte und leere Zeichenfolgen werden von der LIST-Funktion ignoriert.
Eine LIST-Funktion kann nicht als Fensterfunktion verwendet werden, aber sie kann als Eingabe für eine Fensterfunktion verwendet werden.
Diese Funktion unterstützt NCHAR-Eingaben bzw. Ausgaben.
SQL/2008 Erweiterung des Herstellers.
SQL Anywhere unterstützt die SQL/2008 -Sprachenfunktion F441, "Extended set function support", die es zulässt, dass Operanden von Aggregatfunktionen beliebige Ausdrücke sind, die keine Spaltenreferenzen darstellen.
SQL Anywhere bietet keine Unterstützung für die optionale SQL/2008-Funktion F442, "Gemischte Spaltenreferenzen in Gruppenfunktionen". SQL Anywhere lässt es nicht zu, dass die Argumente einer Aggregatfunktion sowohl eine Spaltenreferenz aus dem Abfrageblock mit der LIST-Funktion als auch eine äußere Referenz enthalten. Siehe Aggregatfunktionen und äußere Referenzen. Ein Beispiel finden Sie unter AVG-Funktion [Aggregat]
Die folgende Anweisung gibt den Wert "487 Kennedy Court, 547 School Street" zurück.
SELECT LIST( Street ) FROM Employees WHERE GivenName = 'Thomas'; |
In der folgenden Anweisung werden Mitarbeiter-IDs aufgeführt. Jede Zeile in der Ergebnismenge enthält eine Trennkommaliste mit Mitarbeiter-IDs für nur eine Abteilung.
SELECT LIST( EmployeeID ) FROM Employees GROUP BY DepartmentID; |
LIST( EmployeeID ) |
---|
102,105,160,243,247,249,266,278,... |
129,195,299,467,641,667,690,856,... |
148,390,586,757,879,1293,1336,... |
184,207,318,409,591,888,992,1062,... |
191,703,750,868,921,1013,1570,... |
Die folgende Anweisung sortiert die Mitarbeiter-IDs nach den Nachnamen der Mitarbeiter:
SELECT LIST( EmployeeID ORDER BY Surname ) AS "Sorted IDs" FROM Employees GROUP BY DepartmentID; |
Sortierte IDs "1751,591,1062,1191,992,888,318,184,1576,207,1684,1643,1607,1740,409,1507"
Sortierte IDs |
---|
1013,191,750,921,868,1658,... |
1751,591,1062,1191,992,888,318,... |
1336,879,586,390,757,148,1483,... |
1039,129,1142,195,667,1162,902,... |
160,105,1250,247,266,249,445,... |
Die folgende Anweisung gibt Listen mit Trennsemikolons zurück: Beachten Sie die Position der ORDER BY-Klausel und des Listentrennzeichens:
SELECT LIST( EmployeeID, ';' ORDER BY Surname ) AS "Sorted IDs" FROM Employees GROUP BY DepartmentID; |
Sortierte IDs |
---|
1013;191;750;921;868;1658;703;... |
1751;591;1062;1191;992;888;318;... |
1336;879;586;390;757;148;1483;... |
1039;129;1142;195;667;1162;902; ... |
160;105;1250;247;266;249;445;... |
Achten Sie auf den Unterschied zwischen der vorigen und der folgenden Anweisung, die eine Liste mit Trennkommas der Mitarbeiter-IDs,
sortiert nach einem zusammengesetzten Sortierschlüssel von ( Surname, ';' )
zurückgibt:
SELECT LIST( EmployeeID ORDER BY Surname, ';' ) AS "Sorted IDs" FROM Employees GROUP BY DepartmentID; |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |