Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : SQL Server 2025 (17.x) Préversion de
la base de données SQL Azure SQL Database
Azure SQL Managed Instance
SQL dans Microsoft Fabric
Construit un tableau JSON à partir d’une agrégation de données ou de colonnes SQL. JSON_ARRAYAGG pouvez également être utilisé dans une instruction SELECT avec la clause GROUP BY GROUPING SETS.
Pour créer un objet JSON à partir d’un agrégat, utilisez JSON_OBJECTAGG.
Remarque
Les fonctions JSON_OBJECTAGG
et JSON_ARRAYAGG
sont généralement disponibles pour Azure SQL Database, Azure SQL Managed Instance (configuré avec la stratégie de mise à jour Always-up-to-date) et Microsoft Fabric Data Warehouse.
Conventions de la syntaxe Transact-SQL
Syntaxe
JSON_ARRAYAGG (value_expression [ order_by_clause ] [ json_null_clause ] )
json_null_clause ::= NULL ON NULL | ABSENT ON NULL
order_by_clause ::= ORDER BY <column_list>
Les arguments
value_expression
L’expression de valeur peut être une colonne ou une expression dans une requête ou des constantes/littéraux.
json_null_clause
facultatif.
json_null_clause peut être utilisé pour contrôler le comportement de la fonction JSON_ARRAYAGG
quand value_expression est NULL
. L’option NULL ON NULL
convertit la valeur NULL
SQL en valeur null JSON lors de la génération de la valeur de l’élément dans le tableau JSON. L’option ABSENT ON NULL
omet l’élément dans le tableau JSON si la valeur est NULL
. En cas d’omission, ABSENT ON NULL
est la valeur par défaut.
order_by_clause
facultatif. L’ordre des éléments dans le tableau JSON résultant peut être spécifié pour classer les lignes d’entrée dans l’agrégat.
Exemples
Exemple 1
L’exemple suivant retourne un tableau JSON vide.
SELECT JSON_ARRAYAGG(NULL);
Résultat
[]
Exemple 2
L'exemple suivant construit un tableau JSON avec trois éléments à partir d'un jeu de résultats.
SELECT JSON_ARRAYAGG(c1)
FROM (VALUES ('c'), ('b'), ('a')) AS t(c1);
Résultat
["c","b","a"]
Exemple 3
L’exemple suivant construit un tableau JSON avec trois éléments classés par la valeur de la colonne.
SELECT JSON_ARRAYAGG( c1 ORDER BY c1)
FROM (
VALUES ('c'), ('b'), ('a')
) AS t(c1);
Résultat
["a","b","c"]
Exemple 4
L'exemple suivant renvoie un résultat avec deux colonnes. La première colonne contient la valeur object_id
. La deuxième colonne contient un tableau JSON contenant les noms des colonnes. Les colonnes du tableau JSON sont classées en fonction de la valeur 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;
Résultat
identifiant_objet | 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"] |
Exemple 5
L’exemple suivant retourne un résultat avec quatre colonnes d’une instruction SELECT contenant SUM et JSON_ARRAYAGG agrégats avec GROUP BY GROUPING SETS. Les deux premières colonnes retournent la valeur et id
la type
valeur de colonne. La troisième colonne total_amount
retourne la valeur de l’agrégat SUM sur la amount
colonne. La quatrième colonne json_total_amount
retourne la valeur de JSON_ARRAYAGG’agrégat sur la amount
colonne.
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), ());
Résultat
pièce d'identité | type | total_amount | json_total_name_amount |
---|---|---|---|
1 | un | 2 | [2] |
NULL |
un | 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] |