Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: SQL Server 2025 (17.x)
Azure SQL Database
Azure SQL Managed Instance
SQL Database w usłudze Microsoft Fabric
Składnia JSON_OBJECTAGG tworzy obiekt JSON z agregacji danych SQL lub kolumn.
JSON_OBJECTAGG można również użyć w instrukcji z klauzulą SELECTGROUP BY GROUPING SETS .
Pary klucz/wartość można określić jako wartości wejściowe, kolumnę, odwołania do zmiennych.
Note
Aby utworzyć tablicę JSON na podstawie agregacji, użyj JSON_ARRAYAGG.
Zarówno funkcje agregujące JSON_OBJECTAGG, jak i JSON_ARRAYAGG są:
ogólnie dostępny dla usług Azure SQL Database, Azure SQL Managed Instance (z programem SQL Server 2025 lub always-up-to-dateupdate policy**), bazą danych SQL w usłudze Microsoft Fabric i usługą Fabric Data Warehouse.
w podglądzie SQL Server 2025 (17.x).
Transact-SQL konwencje składni
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
Para klucz/wartość obiektu JSON.
json_null_clause
Optional. Pomija całą właściwość obiektu, jeśli wartość jest NULL, lub użyj wartości null JSON jako wartości właściwości. W przypadku pominięcia NULL ON NULL jest ustawieniem domyślnym.
Wartość zwracana
Zwraca prawidłowy ciąg obiektu JSON typu nvarchar(max).
RETURNING json Jeśli opcja jest dołączona, obiekt JSON jest zwracany jako typ json.
Examples
A. Zwracanie obiektu JSON z jednym kluczem
Poniższy przykład zwraca obiekt JSON z jedną wartością klucza i wartością null.
SELECT JSON_OBJECTAGG('key':NULL);
Oto zestaw wyników.
{"key":null}
B. Konstruowanie obiektu JSON z zestawu wyników
Poniższy przykład tworzy obiekt JSON z trzema właściwościami z zestawu wyników.
SELECT JSON_OBJECTAGG(c1:c2)
FROM (
VALUES('key1', 'c'), ('key2', 'b'), ('key3', 'a')
) AS t(c1, c2);
Oto zestaw wyników.
{"key1":"c","key2":"b","key3":"a"}
C. Zwraca wynik z dwiema kolumnami
Poniższy przykład zwraca wynik z dwiema kolumnami. Pierwsza kolumna zawiera wartość object_id. Druga kolumna zawiera obiekt JSON, w którym klucz jest nazwą kolumny i wartością jest 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. Zwracanie obiektu JSON jako typu JSON
Poniższy przykład zwraca obiekt JSON jako typ json .
SELECT JSON_OBJECTAGG('a':1 RETURNING JSON);
wynik
{"a":1}
Oto zestaw wyników.
| 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. Zwracanie zagregowanego wyniku z czterema kolumnami
Poniższy przykład zwraca wynik z czterema kolumnami z instrukcji zawierającej SELECTSUM instrukcje i JSON_OBJECTAGG agregujące z elementem GROUP BY GROUPING SETS. Dwie pierwsze kolumny zwracają id wartość i type kolumny. Trzecia kolumna total_amount zwraca wartość SUM agregacji w kolumnie amount . Czwarta kolumna json_total_name_amount zwraca wartość JSON_OBJECTAGG agregacji w kolumnach name i 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), ());
Oto zestaw wyników.
| id | typ | 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} |