Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik: SQL Server 2025 (17.x)
Azure SQL Database
Azure SQL Managed Instance
SQL Database a Microsoft Fabricben
JSON-tömböt hoz létre SQL-adatok vagy oszlopok összesítéséből.
JSON_ARRAYAGGzáradékkal ellátott SELECT utasításban GROUP BY GROUPING SETS is használható.
Megjegyzés:
Ha JSON-objektumot szeretne létrehozni aggregátumból, használja a JSON_OBJECTAGG.
Mind a json összesítő függvények JSON_OBJECTAGG , mind JSON_ARRAYAGG a következők:
általánosan elérhető az Azure SQL Database, a felügyelt Azure SQL-példány (az SQL Server 2025 vagy az Always-up-to-dateupdate policy**), a Microsoft Fabric SQL Database és a Fabric Data Warehouse esetében.
az SQL Server 2025 (17.x) előnézetében.
Transact-SQL szintaxis konvenciói
Syntax
JSON_ARRAYAGG (value_expression [ order_by_clause ] [ json_null_clause ] [ RETURNING json ] )
json_null_clause ::= NULL ON NULL | ABSENT ON NULL
order_by_clause ::= ORDER BY <column_list>
Arguments
value_expression
Az értékkifejezés lehet oszlop vagy kifejezés egy lekérdezésben vagy állandóban/literálban.
json_null_clause
Optional.
json_null_clause a függvény viselkedésének JSON_ARRAYAGG szabályozására használható , ha value_expression van NULL. A beállítás NULL ON NULL az SQL NULL értékét JSON null értékké alakítja a JSON-tömbben lévő elem értékének létrehozásakor. A beállítás ABSENT ON NULL kihagyja az elemet a JSON-tömbből, ha az érték NULL. Ha nincs megadva, az alapértelmezett ABSENT ON NULL.
order_by_clause
Optional. Az eredményként kapott JSON-tömb elemeinek sorrendje megadható, hogy a bemeneti sorokat az összesítéshez rendelje.
Visszaadott érték
Egy érvényes , nvarchar(max) típusú JSON-tömbsztringet ad vissza. Ha a beállítás szerepel a RETURNING json beállításban, a JSON-tömb JSON-típusként lesz visszaadva.
Examples
1. példa
Az alábbi példa egy üres JSON-tömböt ad vissza.
SELECT JSON_ARRAYAGG(NULL);
Result
[]
2. példa
Az alábbi példa egy eredményhalmaz három elemét tartalmazó JSON-tömböt hoz létre.
SELECT JSON_ARRAYAGG(c1)
FROM (VALUES ('c'), ('b'), ('a')) AS t(c1);
Result
["c","b","a"]
3. példa
Az alábbi példa egy JSON-tömböt hoz létre, amelynek három eleme az oszlop értéke szerint van rendezve.
SELECT JSON_ARRAYAGG( c1 ORDER BY c1)
FROM (
VALUES ('c'), ('b'), ('a')
) AS t(c1);
Result
["a","b","c"]
4. példa
Az alábbi példa egy két oszlopból származó eredményt ad vissza. Az első oszlop a object_id értéket tartalmazza. A második oszlop egy JSON-tömböt tartalmaz, amely az oszlopok nevét tartalmazza. A JSON-tömb oszlopai a column_id érték alapján vannak rendezve.
SELECT TOP(5) c.object_id, JSON_ARRAYAGG(c.name ORDER BY c.column_id) AS column_list
FROM sys.columns AS c
GROUP BY c.object_id;
Result
| object_id | column_list |
|---|---|
| 3 | ["rsid","rscolid","hbcolid","rcmodified","ti","cid","ordkey","maxinrowlen","status","offset","nullbit","bitpos","colguid","ordlock"] |
| 5 | ["rowsetid","ownertype","idmajor","idminor","numpart","status","fgidfs","rcrows","cmprlevel","fillfact","maxnullbit","maxleaf","maxint","minleaf","minint","rsguid","lockres","scope_id"] |
| 6 | ["id","subid","partid","version","segid","cloneid","rowsetid","dbfragid","status"] |
| 7 | ["auid","type","ownerid","status","fgid","pgfirst","pgroot","pgfirstiam","pcused","pcdata","pcreserved"] |
| 8 | ["status","fileid","name","filename"] |
5. példa
Az alábbi példa egy SZUM és JSON_ARRAYAGG összesítést tartalmazó SELECT utasítás négy oszlopával rendelkező eredményt ad vissza csoportosítási csoportok szerint. Az első két oszlop az és id az type oszlop értékét adja vissza. A harmadik oszlop total_amount a SZUM összesítés értékét adja vissza az amount oszlopon. A negyedik oszlop json_total_amount a JSON_ARRAYAGG összesítés értékét adja vissza az amount oszlopon.
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_ARRAYAGG(amount) AS json_total_amount
FROM T
GROUP BY GROUPING SETS((id), (type), (id, type), ());
Result
| id | típus | total_amount | json_total_name_amount |
|---|---|---|---|
| 1 | a | 2 | [2] |
NULL |
a | 2 | [2] |
| 1 | b | 7 | [4,3] |
NULL |
b | 7 | [4,3] |
| 2 | d | 16 | [9,7] |
NULL |
d | 16 | [9,7] |
NULL |
NULL |
25 | [2,4,3,9,7] |
| 1 | NULL |
9 | [3,4,2] |
| 2 | NULL |
16 | [9,7] |
6. példa
Az alábbi példa json típusú JSON-tömböt ad vissza.
SELECT JSON_ARRAYAGG(1 RETURNING JSON);
Result
[1]