Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: SQL Server 2025 (17.x)
Azure SQL Database Azure SQL
Managed Instance
SQL Database v Microsoft Fabric
Vytvoří pole JSON z agregace dat NEBO sloupců SQL.
JSON_ARRAYAGG lze také použít v SELECT příkazu s klauzulí GROUP BY GROUPING SETS .
Poznámka:
Pokud chcete místo toho vytvořit objekt JSON z agregace, použijte JSON_OBJECTAGG.
Agregační funkce JSON_OBJECTAGG a JSON_ARRAYAGG jsou:
Obecně dostupné pro Azure SQL Database, Azure SQL Managed Instance (s SQL Serverem 2025 nebo always-up-to-dateupdate policy**), databází SQL v Microsoft Fabric a Fabric Data Warehouse.
v preview pro SQL Server 2025 (17.x).
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
Výrazem hodnoty může být sloupec nebo výraz v dotazu nebo konstanty nebo literály.
json_null_clause
Optional.
json_null_clause lze použít k řízení chování JSON_ARRAYAGG funkce při value_expression je NULL. Možnost NULL ON NULL při generování hodnoty elementu v poli JSON převede hodnotu SQL NULL na hodnotu NULL JSON. Možnost ABSENT ON NULL vynechá prvek v poli JSON, pokud je hodnota NULL. Pokud tento parametr vynecháte, ABSENT ON NULL je výchozí.
order_by_clause
Optional. Pořadí prvků ve výsledném poli JSON lze zadat tak, aby se vstupní řádky uspořádaly do agregace.
Návratová hodnota
Vrátí platný řetězec pole JSON typu nvarchar(max ). Pokud je tato RETURNING json možnost zahrnutá, vrátí se pole JSON jako typ JSON .
Examples
Příklad 1
Následující příklad vrátí prázdné pole JSON.
SELECT JSON_ARRAYAGG(NULL);
Result
[]
Příklad 2
Následující příklad vytvoří pole JSON se třemi prvky ze sady výsledků.
SELECT JSON_ARRAYAGG(c1)
FROM (VALUES ('c'), ('b'), ('a')) AS t(c1);
Result
["c","b","a"]
Příklad 3
Následující příklad vytvoří pole JSON se třemi prvky seřazenými podle hodnoty sloupce.
SELECT JSON_ARRAYAGG( c1 ORDER BY c1)
FROM (
VALUES ('c'), ('b'), ('a')
) AS t(c1);
Result
["a","b","c"]
Příklad 4
Následující příklad vrátí výsledek se dvěma sloupci. První sloupec obsahuje hodnotu object_id. Druhý sloupec obsahuje pole JSON obsahující názvy sloupců. Sloupce v poli JSON jsou seřazené na základě column_id hodnoty.
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"] |
Příklad 5
Následující příklad vrátí výsledek se čtyřmi sloupci z příkazu SELECT obsahující suma a JSON_ARRAYAGG agregace pomocí GROUP BY GROUPING SETS. První dva sloupce vrátí id hodnotu sloupce a type hodnotu sloupce. Třetí sloupec total_amount vrátí hodnotu agregace SUM pro amount sloupec. Čtvrtý sloupec json_total_amount vrátí hodnotu JSON_ARRAYAGG agregaci sloupce amount .
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 | typ | 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] |
Příklad 6
Následující příklad vrátí pole JSON jako typ JSON .
SELECT JSON_ARRAYAGG(1 RETURNING JSON);
Result
[1]