Dela via


JSON_ARRAYAGG (Transact-SQL)

Gäller för: SQL Server 2025 (17.x) Förhandsversion av Azure SQL DatabaseAzure SQL Managed InstanceSQL Database i Förhandsversion av Microsoft Fabric

Konstruerar en JSON-matris från en aggregering av SQL-data eller kolumner. JSON_ARRAYAGGkan också användas i en instruktion med SELECT -GROUP BY GROUPING SETSsats.

Anmärkning

Om du vill skapa ett JSON-objekt från en aggregering i stället använder du JSON_OBJECTAGG.

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_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

Värdeuttrycket kan vara en kolumn eller ett uttryck i en fråga eller konstanter/literaler.

json_null_clause

Optional. json_null_clause kan användas för att styra funktionsbeteendet JSON_ARRAYAGG när value_expression är NULL. Alternativet NULL ON NULL konverterar SQL-NULL-värdet till ett JSON null-värde när du genererar värdet för elementet i JSON-matrisen. Alternativet ABSENT ON NULL utelämnar elementet i JSON-matrisen om värdet är NULL. Om det utelämnas är ABSENT ON NULL standard.

order_by_clause

Optional. Ordningen på elementen i den resulterande JSON-matrisen kan anges för att sortera indataraderna till aggregeringen.

Returvärde

Returnerar en giltig JSON-matrissträng av typen nvarchar(max). Om alternativet RETURNING json ingår returneras JSON-matrisen som json-typ .

Examples

Exempel 1

I följande exempel returneras en tom JSON-matris.

SELECT JSON_ARRAYAGG(NULL);

Result

[]

Exempel 2

I följande exempel skapas en JSON-matris med tre element från en resultatuppsättning.

SELECT JSON_ARRAYAGG(c1)
FROM (VALUES ('c'), ('b'), ('a')) AS t(c1);

Result

["c","b","a"]

Exempel 3

I följande exempel skapas en JSON-matris med tre element ordnade efter värdet för kolumnen.

SELECT JSON_ARRAYAGG( c1 ORDER BY c1)
FROM (
    VALUES ('c'), ('b'), ('a')
) AS t(c1);

Result

["a","b","c"]

Exempel 4

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 en JSON-matris som innehåller namnen på kolumnerna. Kolumnerna i JSON-matrisen sorteras baserat på värdet column_id.

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"]

Exempel 5

I följande exempel returneras ett resultat med fyra kolumner från en SELECT-instruktion som innehåller SUM- och JSON_ARRAYAGG-aggregeringar 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_amount returnerar värdet för JSON_ARRAYAGG mängd i amount kolumnen.

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 type 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]

Exempel 6

I följande exempel returneras en JSON-matris som json-typ .

SELECT JSON_ARRAYAGG(1 RETURNING JSON);

Result

[1]