Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: SQL Server 2025 (17.x) Preview
AzureSQL Database Azure SQL Managed Instance
SQL-database
in Microsoft Fabric Preview
Maakt een JSON-matrix op basis van een aggregatie van SQL-gegevens of -kolommen.
JSON_ARRAYAGG kan ook worden gebruikt in een SELECT instructie met component GROUP BY GROUPING SETS .
Opmerking
Als u in plaats daarvan een JSON-object wilt maken op basis van een statistische functie, gebruikt u JSON_OBJECTAGG.
Beide statistische json-functiesJSON_OBJECTAGG en JSON_ARRAYAGG zijn:
algemeen beschikbaar voor Azure SQL Database, Azure SQL Managed Instance (met sql Server 2025 of Always-up-to-dateupdate policy**), SQL-database in Microsoft Fabric en Fabric Data Warehouse.
in preview voor SQL Server 2025 (17.x) Preview.
Transact-SQL syntaxisconventies
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
De waardeexpressie kan een kolom of expressie zijn in een query of constanten/letterlijke waarden.
json_null_clause
Optional.
json_null_clause kan worden gebruikt om het gedrag van JSON_ARRAYAGG de functie te bepalen wanneer value_expression is NULL. De optie NULL ON NULL de SQL-NULL-waarde converteert naar een JSON-null-waarde bij het genereren van de waarde van het element in de JSON-matrix. De optie ABSENT ON NULL het element in de JSON-matrix weglaat als de waarde is NULL. Als u dit weglaat, is ABSENT ON NULL standaard.
order_by_clause
Optional. De volgorde van elementen in de resulterende JSON-matrix kan worden opgegeven om de invoerrijen te ordenen op de statistische waarde.
Retourwaarde
Hiermee wordt een geldige JSON-matrixtekenreeks van het type nvarchar(max) geretourneerd. Als de RETURNING json optie is opgenomen, wordt de JSON-matrix geretourneerd als json-type .
Examples
Voorbeeld 1
In het volgende voorbeeld wordt een lege JSON-matrix geretourneerd.
SELECT JSON_ARRAYAGG(NULL);
Result
[]
Voorbeeld 2
In het volgende voorbeeld wordt een JSON-matrix gemaakt met drie elementen uit een resultatenset.
SELECT JSON_ARRAYAGG(c1)
FROM (VALUES ('c'), ('b'), ('a')) AS t(c1);
Result
["c","b","a"]
Voorbeeld 3
In het volgende voorbeeld wordt een JSON-matrix samengesteld met drie elementen die zijn gerangschikt op de waarde van de kolom.
SELECT JSON_ARRAYAGG( c1 ORDER BY c1)
FROM (
VALUES ('c'), ('b'), ('a')
) AS t(c1);
Result
["a","b","c"]
Voorbeeld 4
In het volgende voorbeeld wordt een resultaat met twee kolommen geretourneerd. De eerste kolom bevat de object_id-waarde. De tweede kolom bevat een JSON-matrix met de namen van de kolommen. De kolommen in de JSON-matrix worden gerangschikt op basis van de column_id waarde.
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"] |
Voorbeeld 5
In het volgende voorbeeld wordt een resultaat geretourneerd met vier kolommen uit een SELECT-instructie met SUM en JSON_ARRAYAGG aggregaties met GROUP BY GROUPING SETS. De eerste twee kolommen retourneren de id en type kolomwaarde. De derde kolom total_amount retourneert de waarde van somaggregaties op de amount kolom. De vierde kolom json_total_amount retourneert de waarde van JSON_ARRAYAGG aggregaties op de amount kolom.
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] |
Voorbeeld 6
In het volgende voorbeeld wordt een JSON-matrix geretourneerd als json-type .
SELECT JSON_ARRAYAGG(1 RETURNING JSON);
Result
[1]