Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: SQL Server 2025 (17.x)
Azure SQL-Datenbank
AzureSQL Managed Instance
SQL SQL-Datenbank in Microsoft Fabric
Erstellt ein JSON-Array aus einer Aggregation von SQL-Daten oder -Spalten.
JSON_ARRAYAGG kann auch in einer SELECT Anweisung mit GROUP BY GROUPING SETS Klausel verwendet werden.
Hinweis
Verwenden Sie JSON_OBJECTAGG, um stattdessen ein JSON-Objekt aus einem Aggregat zu erstellen.
Beide json-AggregatfunktionenJSON_OBJECTAGG und JSON_ARRAYAGG sind:
allgemein verfügbar für Azure SQL-Datenbank, Azure SQL Managed Instance (mit sql Server 2025 oder Always-up-to-dateupdate policy**), SQL-Datenbank in Microsoft Fabric und Fabric Data Warehouse.
in der Vorschau für SQL Server 2025 (17.x).
Transact-SQL-Syntaxkonventionen
Syntax
JSON_ARRAYAGG (value_expression [ order_by_clause ] [ json_null_clause ] [ RETURNING json ] )
json_null_clause ::= NULL ON NULL | ABSENT ON NULL
order_by_clause ::= ORDER BY <column_list>
Arguments
value_expression
Der Wertausdruck kann eine Spalte oder ein Ausdruck in einer Abfrage oder Konstanten/Literale sein.
json_null_clause
Optional.
json_null_clause können verwendet werden, um das Verhalten der JSON_ARRAYAGG Funktion zu steuern, wenn value_expression ist NULL. Die Option NULL ON NULL konvertiert den SQL-NULL-Wert in einen JSON-Null-Wert, wenn der Wert des Elements im JSON-Array generiert wird. Die Option ABSENT ON NULL lässt das Element im JSON-Array aus, wenn der Wert NULL ist. Wenn nicht angegeben, ist ABSENT ON NULL der Standardwert.
order_by_clause
Optional. Die Reihenfolge der Elemente im resultierenden JSON-Array kann angegeben werden, um die Eingabezeilen an das Aggregat zu ordnen.
Rückgabewert
Gibt eine gültige JSON-Arrayzeichenfolge vom Typ nvarchar(max) zurück. Wenn die RETURNING json Option enthalten ist, wird das JSON-Array als JSON-Typ zurückgegeben.
Examples
Beispiel 1
Im folgenden Beispiel wird ein leeres JSON-Array zurückgegeben.
SELECT JSON_ARRAYAGG(NULL);
Result
[]
Beispiel 2
Im folgenden Beispiel wird ein JSON-Array mit drei Elementen aus einem Resultset erstellt.
SELECT JSON_ARRAYAGG(c1)
FROM (VALUES ('c'), ('b'), ('a')) AS t(c1);
Result
["c","b","a"]
Beispiel 3
Im folgenden Beispiel wird ein JSON-Array mit drei Elementen erstellt, die nach dem Wert der Spalte sortiert sind.
SELECT JSON_ARRAYAGG( c1 ORDER BY c1)
FROM (
VALUES ('c'), ('b'), ('a')
) AS t(c1);
Result
["a","b","c"]
Beispiel 4
Im folgenden Beispiel wird ein Ergebnis mit zwei Spalten zurückgegeben. Die erste Spalte enthält den Wert object_id. Die zweite Spalte enthält ein JSON-Array, das die Namen der Spalten enthält. Die Spalten im JSON-Array werden basierend auf dem Wert column_id sortiert.
SELECT TOP(5) c.object_id, JSON_ARRAYAGG(c.name ORDER BY c.column_id) AS column_list
FROM sys.columns AS c
GROUP BY c.object_id;
Result
| object_id | column_list |
|---|---|
| 3 | ["rsid","rscolid","hbcolid","rcmodified","ti","cid","ordkey","maxinrowlen","status","offset","nullbit","bitpos","colguid","ordlock"] |
| 5 | ["rowsetid","ownertype","idmajor","idminor","numpart","status","fgidfs","rcrows","cmprlevel","fillfact","maxnullbit","maxleaf","maxint","minleaf","minint","rsguid","lockres","scope_id"] |
| 6 | ["id","subid","partid","version","segid","cloneid","rowsetid","dbfragid","status"] |
| 7 | ["auid","type","ownerid","status","fgid","pgfirst","pgroot","pgfirstiam","pcused","pcdata","pcreserved"] |
| 8 | ["status","fileid","name","filename"] |
Beispiel 5
Im folgenden Beispiel wird ein Ergebnis mit vier Spalten aus einer SELECT-Anweisung zurückgegeben, die SUMME enthält, und JSON_ARRAYAGG Aggregate mit GROUP BY GROUPING SETS. Die ersten beiden Spalten geben den Wert und id den type Spaltenwert zurück. Die dritte Spalte total_amount gibt den Wert des SUMME-Aggregats in der amount Spalte zurück. Die vierte Spalte json_total_amount gibt den Wert JSON_ARRAYAGG Aggregats in der amount Spalte zurück.
WITH T
AS (SELECT *
FROM (VALUES (1, 'k1', 'a', 2), (1, 'k2', 'b', 3), (1, 'k3', 'b', 4), (2, 'j1', 'd', 7), (2, 'j2', 'd', 9)) AS b(id, name, type, amount))
SELECT id,
type,
SUM(amount) AS total_amount,
JSON_ARRAYAGG(amount) AS json_total_amount
FROM T
GROUP BY GROUPING SETS((id), (type), (id, type), ());
Result
| id | type | total_amount | json_total_name_amount |
|---|---|---|---|
| 1 | a | 2 | [2] |
NULL |
a | 2 | [2] |
| 1 | b | 7 | [4,3] |
NULL |
b | 7 | [4,3] |
| 2 | d | 16 | [9,7] |
NULL |
d | 16 | [9,7] |
NULL |
NULL |
25 | [2,4,3,9,7] |
| 1 | NULL |
9 | [3,4,2] |
| 2 | NULL |
16 | [9,7] |
Beispiel 6
Im folgenden Beispiel wird ein JSON-Array als JSON-Typ zurückgegeben.
SELECT JSON_ARRAYAGG(1 RETURNING JSON);
Result
[1]