Megosztás a következőn keresztül:


JSON_ARRAYAGG (Transact-SQL)

A következőkre vonatkozik: SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL 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]