Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: SQL Server 2025 (17.x)
Microsoft Fabric'te
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği SQL veritabanı
Söz JSON_OBJECTAGG dizimi, SQL verilerinin veya sütunlarının bir toplamasından bir JSON nesnesi oluşturur.
JSON_OBJECTAGGyan tümcesi olan SELECT bir GROUP BY GROUPING SETS deyimde de kullanılabilir.
Anahtar/değer çiftleri giriş değerleri, sütun, değişken başvuruları olarak belirtilebilir.
Note
Bunun yerine bir toplamadan JSON dizisi oluşturmak için JSON_ARRAYAGG 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_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
JSON nesnesinin anahtar / değer çifti.
json_null_clause
Optional. Değer NULLise nesnenin tüm özelliğini atlar veya özellik değeri olarak JSON null değerini kullanır. Atlanırsa, NULL ON NULL varsayılandır.
Dönüş değeri
Nvarchar(max) türünde geçerli bir JSON nesne dizesi döndürür.
RETURNING json Seçenek dahil edilirse JSON nesnesi json türü olarak döndürülür.
Examples
A. Tek bir anahtarla JSON nesnesi döndürme
Aşağıdaki örnek, bir anahtar ve null değer içeren bir JSON nesnesi döndürür.
SELECT JSON_OBJECTAGG('key':NULL);
Sonuç kümesi aşağıdadır.
{"key":null}
B. Sonuç kümesinden JSON nesnesi oluşturma
Aşağıdaki örnek, bir sonuç kümesinden üç özelliğe sahip bir JSON nesnesi oluşturur.
SELECT JSON_OBJECTAGG(c1:c2)
FROM (
VALUES('key1', 'c'), ('key2', 'b'), ('key3', 'a')
) AS t(c1, c2);
Sonuç kümesi aşağıdadır.
{"key1":"c","key2":"b","key3":"a"}
C. İki sütunlu sonuç döndür
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, anahtarın sütun adı ve değerin column_idolduğu bir JSON nesnesi içerir.
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. JSON nesnesini JSON türü olarak döndürme
Aşağıdaki örnek json türü olarak bir JSON nesnesi döndürür.
SELECT JSON_OBJECTAGG('a':1 RETURNING JSON);
Sonuç
{"a":1}
Sonuç kümesi aşağıdadır.
| 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. Dört sütunlu toplu sonuç döndürme
Aşağıdaki örnek, içeren ve SELECT ile toplayan SUM bir deyimden dört sütun içeren JSON_OBJECTAGGbir GROUP BY GROUPING SETS 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_amountSUM toplama değerini amount döndürür. Dördüncü sütun ve json_total_name_amount sütunlarında JSON_OBJECTAGGname toplama değerini amount 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_OBJECTAGG(name:amount) AS json_total_name_amount
FROM T
GROUP BY GROUPING SETS((id), (type), (id, type), ());
Sonuç kümesi aşağıdadır.
| id | type | 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} |
İlgili içerik
- SQL Veritabanı Altyapısında JSON Yol İfadeleri
- SQL Server'da JSON verilerini
- JSON_ARRAYAGG (Transact-SQL)