Udostępnij za pomocą


JSON_ARRAYAGG (Transact-SQL)

Dotyczy: SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL 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]