Aracılığıyla paylaş


JSON_ARRAYAGG (Transact-SQL)

Şunlar için geçerlidir: SQL Server 2025 (17.x) Microsoft Fabric'teAzure SQL VeritabanıAzure SQL Yönetilen Örneği SQL veritabanı

SQL verilerinin veya sütunlarının bir toplamasından bir JSON dizisi oluşturur. JSON_ARRAYAGGyan tümcesi olan SELECT bir GROUP BY GROUPING SETS deyimde de kullanılabilir.

Uyarı

Bunun yerine bir toplamadan JSON nesnesi oluşturmak için JSON_OBJECTAGG kullanın.

Hem json toplama işlevleri JSON_OBJECTAGG hem de JSON_ARRAYAGG şunlardır:

  • Genel olarak Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ( SQL Server 2025 veya Always-up-to-dategüncelleştirme ilkesi** ile), Microsoft Fabric'teki SQL veritabanı ve Doku Veri Ambarı için kullanılabilir.

  • SQL Server 2025 (17.x) için önizlemede.

Transact-SQL söz dizimi kuralları

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ğer ifadesi, sorgudaki bir sütun veya ifade ya da sabitler/değişmez değerler olabilir.

json_null_clause

Optional. json_null_clause, JSON_ARRAYAGGolduğunda işlevin NULL davranışını denetlemek için kullanılabilir. NULL ON NULL seçeneği, JSON dizisindeki öğesinin değerini oluştururken SQL NULL değerini bir JSON null değerine dönüştürür. ABSENT ON NULL seçeneği, değer NULLise JSON dizisindeki öğesini atlar. Atlanırsa, ABSENT ON NULL varsayılandır.

order_by_clause

Optional. Sonuçta elde edilen JSON dizisindeki öğelerin sırası, giriş satırlarını toplamaya göre sıralamak için belirtilebilir.

Dönüş değeri

Nvarchar(max) türünde geçerli bir JSON dizi dizesi döndürür. RETURNING json Seçenek dahil edilirse JSON dizisi json türü olarak döndürülür.

Examples

Örnek 1

Aşağıdaki örnek boş bir JSON dizisi döndürür.

SELECT JSON_ARRAYAGG(NULL);

Result

[]

Örnek 2

Aşağıdaki örnek, bir sonuç kümesinden üç öğe içeren bir JSON dizisi oluşturur.

SELECT JSON_ARRAYAGG(c1)
FROM (VALUES ('c'), ('b'), ('a')) AS t(c1);

Result

["c","b","a"]

Örnek 3

Aşağıdaki örnek, sütunun değerine göre sıralanmış üç öğe içeren bir JSON dizisi oluşturur.

SELECT JSON_ARRAYAGG( c1 ORDER BY c1)
FROM (
    VALUES ('c'), ('b'), ('a')
) AS t(c1);

Result

["a","b","c"]

Örnek 4

Aşağıdaki örnek, iki sütunlu bir sonuç döndürür. İlk sütun object_id değerini içerir. İkinci sütun, sütunların adlarını içeren bir JSON dizisi içerir. JSON dizisindeki sütunlar column_id değerine göre sıralanır.

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"]

Örnek 5

Aşağıdaki örnek, TOPLA ve GRUPLANDıRMA GÖRE GRUPLANDıRMA KÜMELERI ile JSON_ARRAYAGG toplamları içeren select deyiminden dört sütun içeren bir sonuç döndürür. İlk iki sütun ve id sütun değerini döndürürtype. Üçüncü sütun, sütundaki total_amountamount TOPLA toplama değerini döndürür. Dördüncü sütun, sütundaki json_total_amountamount JSON_ARRAYAGG toplama değerini döndürür.

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]

Örnek 6

Aşağıdaki örnek json türü olarak bir JSON dizisi döndürür.

SELECT JSON_ARRAYAGG(1 RETURNING JSON);

Result

[1]