Bagikan melalui


JSON_ARRAYAGG (Transact-SQL)

Berlaku untuk: Database SQL SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed Instancedi Microsoft Fabric

Membuat array JSON dari agregasi data atau kolom SQL. JSON_ARRAYAGG juga dapat digunakan dalam SELECT pernyataan dengan GROUP BY GROUPING SETS klausa.

Nota

Untuk membuat objek JSON dari agregat, gunakan JSON_OBJECTAGG.

Kedua fungsi agregat JSON_OBJECTAGG dan JSON_ARRAYAGG adalah:

  • umumnya tersedia untuk Azure SQL Database, Azure SQL Managed Instance (dengan SQL Server 2025 atau Always-up-to-dateupdate policy**), database SQL di Microsoft Fabric, dan Fabric Data Warehouse.

  • dalam pratinjau untuk SQL Server 2025 (17.x).

Konvensi sintaks transact-SQL

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

Ekspresi nilai bisa berupa kolom atau ekspresi dalam kueri atau konstanta/literal.

json_null_clause

Optional. json_null_clause dapat digunakan untuk mengontrol perilaku JSON_ARRAYAGG fungsi saat value_expression adalah NULL. Opsi NULL ON NULL mengonversi nilai SQL NULL menjadi nilai null JSON saat menghasilkan nilai elemen dalam array JSON. Opsi ABSENT ON NULL menghilangkan elemen dalam array JSON jika nilainya adalah NULL. Jika dihilangkan, ABSENT ON NULL adalah default.

order_by_clause

Optional. Urutan elemen dalam array JSON yang dihasilkan dapat ditentukan untuk mengurutkan baris input ke agregat.

Mengembalikan nilai

Mengembalikan string array JSON yang valid dari jenis nvarchar(maks ). RETURNING json Jika opsi disertakan maka array JSON dikembalikan sebagai jenis json.

Examples

Contoh 1

Contoh berikut mengembalikan array JSON kosong.

SELECT JSON_ARRAYAGG(NULL);

Result

[]

Contoh 2

Contoh berikut membuat array JSON dengan tiga elemen dari kumpulan hasil.

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

Result

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

Contoh 3

Contoh berikut membuat array JSON dengan tiga elemen yang diurutkan berdasarkan nilai kolom.

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

Result

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

Contoh 4

Contoh berikut mengembalikan hasil dengan dua kolom. Kolom pertama berisi object_id nilai . Kolom kedua berisi array JSON yang berisi nama kolom. Kolom dalam array JSON diurutkan berdasarkan column_id nilai .

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

Contoh 5

Contoh berikut mengembalikan hasil dengan empat kolom dari pernyataan SELECT yang berisi SUM dan JSON_ARRAYAGG agregat dengan GROUP BY GROUPING SETS. Dua kolom pertama mengembalikan id nilai kolom dan type . Kolom total_amount ketiga mengembalikan nilai agregat SUM pada amount kolom. Kolom keempat json_total_amount mengembalikan nilai agregat JSON_ARRAYAGG pada 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 jenis 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]

Contoh 6

Contoh berikut mengembalikan array JSON sebagai jenis json .

SELECT JSON_ARRAYAGG(1 RETURNING JSON);

Result

[1]