Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
              Gäller för: SQL Server 2025 (17.x) Förhandsversion av 
Azure SQL Database
Azure SQL Managed Instance
SQL Database i Förhandsversion av Microsoft Fabric
Syntaxen JSON_OBJECTAGG konstruerar ett JSON-objekt från en aggregering av SQL-data eller kolumner. 
              JSON_OBJECTAGGkan också användas i en instruktion med SELECT -GROUP BY GROUPING SETSsats.
Nyckel/värde-paren kan anges som indatavärden, kolumn- och variabelreferenser.
Note
Om du vill skapa en JSON-matris från en aggregering i stället använder du JSON_ARRAYAGG.
Både  json-aggregerade funktioner JSON_OBJECTAGG och JSON_ARRAYAGG är:
- allmänt tillgänglig för Azure SQL Database, Azure SQL Managed Instance (med SQL Server 2025 eller Always-up-to-dateupdate policy**), SQL-databas i Microsoft Fabric och Fabric Data Warehouse. 
- förhandsversion för SQL Server 2025 (17.x). 
              
              
              Transact-SQL syntaxkonventioner
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
Nyckel/värde-paret för JSON-objektet.
json_null_clause
Optional. Utelämnar hela egenskapen för ett objekt om värdet är NULLeller använder JSON null som egenskapsvärde. Om det utelämnas är NULL ON NULL standard.
Returvärde
Returnerar en giltig JSON-objektsträng av typen nvarchar(max). Om alternativet RETURNING json ingår returneras JSON-objektet som json-typ .
Examples
A. Returnera JSON-objekt med en nyckel
I följande exempel returneras ett JSON-objekt med en nyckel och ett null-värde.
SELECT JSON_OBJECTAGG('key':NULL);
Här är resultatet.
{"key":null}
B. Konstruera JSON-objekt från resultatuppsättning
I följande exempel skapas ett JSON-objekt med tre egenskaper från en resultatuppsättning.
SELECT JSON_OBJECTAGG(c1:c2)
FROM (
    VALUES('key1', 'c'), ('key2', 'b'), ('key3', 'a')
) AS t(c1, c2);
Här är resultatet.
{"key1":"c","key2":"b","key3":"a"}
C. Returnera resultat med två kolumner
I följande exempel returneras ett resultat med två kolumner. Den första kolumnen innehåller värdet object_id. Den andra kolumnen innehåller ett JSON-objekt där nyckeln är kolumnnamnet och värdet är 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. Returnera ett JSON-objekt som JSON-typ
I följande exempel returneras ett JSON-objekt som json-typ .
SELECT JSON_OBJECTAGG('a':1 RETURNING JSON);
resultat
{"a":1}
Här är resultatet.
| 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. Returnera aggregerat resultat med fyra kolumner
I följande exempel returneras ett resultat med fyra kolumner från en SELECT -instruktion som innehåller SUM och JSON_OBJECTAGG aggregerar med GROUP BY GROUPING SETS. De två första kolumnerna id returnerar kolumnvärdet och type . Den tredje kolumnen total_amount returnerar värdet för SUM aggregering i amount kolumnen. Den fjärde kolumnen json_total_name_amount returnerar värdet för JSON_OBJECTAGG mängd på kolumnerna name och 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), ());
Här är resultatet.
| 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} |