Aracılığıyla paylaş


JSON_OBJECTAGG (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ı

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}