Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: Sql Server 2025 (17.x)
Database
SQL di Azure Istanza
gestita di SQL di Azurein Microsoft Fabric
Costruisce una matrice JSON da un'aggregazione di dati o colonne SQL.
JSON_ARRAYAGG può essere usato anche in un'istruzione SELECT con GROUP BY GROUPING SETS clausola .
Annotazioni
Per creare invece un oggetto JSON da un'aggregazione, usare JSON_OBJECTAGG.
Entrambe le funzioni di aggregazione JSON_OBJECTAGG e JSON_ARRAYAGG sono:
disponibile a livello generale per il database SQL di Azure, Istanza gestita di SQL di Azure (con SQL Server 2025 o Always-up-to-dateupdate policy**), database SQL in Microsoft Fabric e Fabric Data Warehouse.
in anteprima per SQL Server 2025 (17.x).
Convenzioni relative alla sintassi Transact-SQL
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
L'espressione valore può essere una colonna o un'espressione in una query o costanti/valori letterali.
json_null_clause
Optional.
json_null_clause può essere usato per controllare il comportamento della JSON_ARRAYAGG funzione quando value_expression è NULL. L'opzione NULL ON NULL converte il valore SQL NULL in un valore JSON null durante la generazione del valore dell'elemento nella matrice JSON. Se il valore è ABSENT ON NULL, l'opzione NULL ometterà l'elemento nella matrice JSON. Se omesso, ABSENT ON NULL è predefinito.
order_by_clause
Optional. È possibile specificare l'ordine degli elementi nella matrice JSON risultante per ordinare le righe di input all'aggregazione.
Valore restituito
Restituisce una stringa di matrice JSON valida di tipo nvarchar(max). Se l'opzione RETURNING json è inclusa, la matrice JSON viene restituita come tipo json .
Examples
Esempio 1
L'esempio seguente restituisce una matrice JSON vuota.
SELECT JSON_ARRAYAGG(NULL);
Result
[]
Esempio 2
L'esempio seguente costruisce una matrice JSON con tre elementi di un set di risultati.
SELECT JSON_ARRAYAGG(c1)
FROM (VALUES ('c'), ('b'), ('a')) AS t(c1);
Result
["c","b","a"]
Esempio 3
Il seguente esempio costruisce una matrice JSON con tre elementi ordinati in base al valore della colonna.
SELECT JSON_ARRAYAGG( c1 ORDER BY c1)
FROM (
VALUES ('c'), ('b'), ('a')
) AS t(c1);
Result
["a","b","c"]
Esempio 4
L'esempio seguente restituisce un set di risultati con due colonne. La prima colonna contiene il valore object_id. La seconda colonna contiene una matrice JSON contenente i nomi delle colonne. Le colonne nella matrice JSON vengono ordinate in base al valore 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"] |
Esempio 5
Nell'esempio seguente viene restituito un risultato con quattro colonne di un'istruzione SELECT contenente SUM e JSON_ARRAYAGG aggregazioni con GROUPING SETS GROUPING GROUPING. Le prime due colonne restituiscono il valore della id colonna e type . La terza colonna total_amount restituisce il valore dell'aggregazione SUM nella amount colonna. La quarta colonna json_total_amount restituisce il valore di JSON_ARRAYAGG aggregato nella amount colonna.
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] |
Esempio 6
L'esempio seguente restituisce una matrice JSON come tipo json .
SELECT JSON_ARRAYAGG(1 RETURNING JSON);
Result
[1]