Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: Database SQL SQL Server 2025 (17.x)
Azure SQL Database
Azure SQL Managed Instance
di Microsoft Fabric
Sintaks JSON_OBJECTAGG membangun objek JSON dari agregasi data atau kolom SQL.
JSON_OBJECTAGG juga dapat digunakan dalam SELECT pernyataan dengan GROUP BY GROUPING SETS klausa.
Pasangan kunci/nilai dapat ditentukan sebagai nilai input, kolom, referensi variabel.
Note
Untuk membuat array JSON dari agregat, gunakan JSON_ARRAYAGG.
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).
Syntax
JSON_OBJECTAGG ( json_key_value [ json_null_clause ] [ RETURNING json ] )
json_key_value ::= <json_name> : <value_expression>
json_null_clause ::= NULL ON NULL | ABSENT ON NULL
Arguments
json_key_value
Pasangan kunci/nilai objek JSON.
json_null_clause
Optional. Menghilangkan seluruh properti objek jika nilainya adalah NULL, atau gunakan JSON null sebagai nilai properti. Jika dihilangkan, NULL ON NULL adalah default.
Mengembalikan nilai
Mengembalikan string objek JSON yang valid dari jenis nvarchar(maks ).
RETURNING json Jika opsi disertakan maka objek JSON dikembalikan sebagai jenis json.
Examples
A. Mengembalikan objek JSON dengan satu kunci
Contoh berikut mengembalikan objek JSON dengan satu kunci dan nilai null.
SELECT JSON_OBJECTAGG('key':NULL);
Berikut kumpulan hasilnya.
{"key":null}
B. Membuat objek JSON dari tataan hasil
Contoh berikut membuat objek JSON dengan tiga properti dari kumpulan hasil.
SELECT JSON_OBJECTAGG(c1:c2)
FROM (
VALUES('key1', 'c'), ('key2', 'b'), ('key3', 'a')
) AS t(c1, c2);
Berikut kumpulan hasilnya.
{"key1":"c","key2":"b","key3":"a"}
C. Mengembalikan hasil dengan dua kolom
Contoh berikut mengembalikan hasil dengan dua kolom. Kolom pertama berisi object_id nilai . Kolom kedua berisi objek JSON di mana kuncinya adalah nama dan nilai kolom adalah column_id.
SELECT TOP (5) c.object_id,
JSON_OBJECTAGG(c.name:c.column_id) AS columns
FROM sys.columns AS c
GROUP BY c.object_id;
D. Mengembalikan objek JSON sebagai jenis JSON
Contoh berikut mengembalikan objek JSON sebagai jenis json .
SELECT JSON_OBJECTAGG('a':1 RETURNING JSON);
Hasil
{"a":1}
Berikut kumpulan hasilnya.
| object_id | column_list |
|---|---|
| 3 | {"bitpos":12,"cid":6,"colguid":13,"hbcolid":3,"maxinrowlen":8,"nullbit":11,"offset":10,"ordkey":7,"ordlock":14,"rcmodified":4,"rscolid":2,"rsid":1,"status":9,"ti":5} |
| 5 | {"cmprlevel":9,"fgidfs":7,"fillfact":10,"idmajor":3,"idminor":4,"lockres":17,"maxint":13,"maxleaf":12,"maxnullbit":11,"minint":15,"minleaf":14,"numpart":5,"ownertype":2,"rcrows":8,"rowsetid":1,"rsguid":16,"scope_id":18,"status":6} |
| 6 | {"cloneid":6,"dbfragid":8,"id":1,"partid":3,"rowsetid":7,"segid":5,"status":9,"subid":2,"version":4} |
| 7 | {"auid":1,"fgid":5,"ownerid":3,"pcdata":10,"pcreserved":11,"pcused":9,"pgfirst":6,"pgfirstiam":8,"pgroot":7,"status":4,"type":2} |
| 8 | {"fileid":2,"filename":4,"name":3,"status":1} |
E. Mengembalikan hasil agregat dengan empat kolom
Contoh berikut mengembalikan hasil dengan empat kolom dari pernyataan yang SELECT berisi SUM dan JSON_OBJECTAGG mengagregasi dengan GROUP BY GROUPING SETS. Dua kolom pertama mengembalikan id nilai kolom dan type . Kolom total_amount ketiga mengembalikan nilai SUM agregat pada amount kolom. Kolom keempat json_total_name_amount mengembalikan nilai JSON_OBJECTAGG agregat pada name kolom dan 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_OBJECTAGG(name:amount) AS json_total_name_amount
FROM T
GROUP BY GROUPING SETS((id), (type), (id, type), ());
Berikut kumpulan hasilnya.
| id | jenis | total_amount | json_total_name_amount |
|---|---|---|---|
| 1 | a | 2 | {"k1":2} |
NULL |
a | 2 | {"k1":2} |
| 1 | b | 7 | {"k3":4,"k2":3} |
NULL |
b | 7 | {"k3":4,"k2":3} |
| 2 | d | 16 | {"j2":9,"j1":7} |
NULL |
d | 16 | {"j2":9,"j1":7} |
NULL |
NULL |
25 | {"k1":2,"k3":4,"k2":3,"j2":9,"j1":7} |
| 1 | NULL |
9 | {"k2":3,"k3":4,"k1":2} |
| 2 | NULL |
16 | {"j2":9,"j1":7} |