Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: SQL Server 2025 (17.x)
Azure SQL Database
Azure SQL Managed Instance
SQL Database w usłudze Microsoft Fabric
Tworzy tablicę JSON z agregacji danych SQL lub kolumn.
JSON_ARRAYAGG można również użyć w instrukcji z klauzulą SELECTGROUP BY GROUPING SETS .
Uwaga / Notatka
Aby utworzyć obiekt JSON na podstawie agregacji, użyj JSON_OBJECTAGG.
Zarówno funkcje agregujące JSON_OBJECTAGG, jak i JSON_ARRAYAGG są:
ogólnie dostępny dla usług Azure SQL Database, Azure SQL Managed Instance (z programem SQL Server 2025 lub always-up-to-dateupdate policy**), bazą danych SQL w usłudze Microsoft Fabric i usługą Fabric Data Warehouse.
w podglądzie SQL Server 2025 (17.x).
Transact-SQL konwencje składni
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
Wyrażenie wartości może być kolumną lub wyrażeniem w zapytaniu lub stałymi/literałami.
json_null_clause
Optional.
json_null_clause można użyć do kontrolowania JSON_ARRAYAGG zachowania funkcji, gdy value_expression to NULL. Opcja NULL ON NULL konwertuje wartość NULL SQL na wartość null JSON podczas generowania wartości elementu w tablicy JSON. Opcja ABSENT ON NULL pomija element w tablicy JSON, jeśli wartość jest NULL. W przypadku pominięcia ABSENT ON NULL jest ustawieniem domyślnym.
order_by_clause
Optional. Kolejność elementów w wynikowej tablicy JSON można określić w celu uporządkowania wierszy wejściowych w agregacji.
Wartość zwracana
Zwraca prawidłowy ciąg tablicy JSON typu nvarchar(max).
RETURNING json Jeśli opcja jest dołączona, tablica JSON jest zwracana jako typ json.
Examples
Przykład 1
Poniższy przykład zwraca pustą tablicę JSON.
SELECT JSON_ARRAYAGG(NULL);
Result
[]
Przykład 2
Poniższy przykład tworzy tablicę JSON z trzema elementami z zestawu wyników.
SELECT JSON_ARRAYAGG(c1)
FROM (VALUES ('c'), ('b'), ('a')) AS t(c1);
Result
["c","b","a"]
Przykład 3
Poniższy przykład tworzy tablicę JSON z trzema elementami uporządkowanymi według wartości kolumny.
SELECT JSON_ARRAYAGG( c1 ORDER BY c1)
FROM (
VALUES ('c'), ('b'), ('a')
) AS t(c1);
Result
["a","b","c"]
Przykład 4
Poniższy przykład zwraca wynik z dwiema kolumnami. Pierwsza kolumna zawiera wartość object_id. Druga kolumna zawiera tablicę JSON zawierającą nazwy kolumn. Kolumny w tablicy JSON są uporządkowane na podstawie wartości column_id.
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"] |
Przykład 5
Poniższy przykład zwraca wynik z czterema kolumnami z instrukcji SELECT zawierającej sumę i JSON_ARRAYAGG agregacji z zestawami GRUPOWANIA WEDŁUG GRUPOWANIA. Dwie pierwsze kolumny zwracają id wartość i type kolumny. Trzecia kolumna total_amount zwraca wartość agregacji SUM w kolumnie amount . Czwarta kolumna json_total_amount zwraca wartość JSON_ARRAYAGG agregacji w kolumnie 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] |
Przykład 6
Poniższy przykład zwraca tablicę JSON jako typ json .
SELECT JSON_ARRAYAGG(1 RETURNING JSON);
Result
[1]