Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к: Sql Server 2025 (17.x)
База данных
SQL Azure Управляемого экземпляра
SQL Azure в Microsoft Fabric
Создает массив JSON из агрегирования данных ИЛИ столбцов SQL.
JSON_ARRAYAGGтакже можно использовать в инструкции с SELECT предложениемGROUP BY GROUPING SETS.
Замечание
Чтобы создать объект JSON из агрегата, используйте JSON_OBJECTAGG.
Как агрегатные функции JSON_OBJECTAGG, так и JSON_ARRAYAGG следующие:
общедоступная база данных SQL Azure, Управляемый экземпляр SQL Azure (с sql Server 2025 или Always-up-to-dateupdate policy**), база данных SQL в Microsoft Fabric и хранилище данных Fabric.
в предварительном просмотре SQL Server 2025 (17.x).
Соглашения о синтаксисе 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
Выражение значения может быть столбцом или выражением в запросе или константах или литералах.
json_null_clause
Optional.
json_null_clause можно использовать для управления поведением JSON_ARRAYAGG функции при value_expressionNULL.
NULL ON NULL Параметр преобразует значение SQL NULL в значение JSON NULL при создании значения элемента в массиве JSON.
ABSENT ON NULL Параметр исключает элемент в массиве JSON, если значение равноNULL. Если опущено, ABSENT ON NULL значение по умолчанию.
order_by_clause
Optional. Порядок элементов в результирующем массиве JSON можно указать для упорядочивания входных строк в агрегат.
Возвращаемое значение
Возвращает допустимую строку массива JSON типа nvarchar(max ).
RETURNING json Если параметр включен, массив JSON возвращается в виде типа JSON.
Examples
Пример 1
В следующем примере возвращается пустой массив JSON.
SELECT JSON_ARRAYAGG(NULL);
Result
[]
Пример 2
В следующем примере создается массив JSON с тремя элементами из результирующий набор.
SELECT JSON_ARRAYAGG(c1)
FROM (VALUES ('c'), ('b'), ('a')) AS t(c1);
Result
["c","b","a"]
Пример 3
В следующем примере создается массив JSON с тремя элементами, упорядоченными по значению столбца.
SELECT JSON_ARRAYAGG( c1 ORDER BY c1)
FROM (
VALUES ('c'), ('b'), ('a')
) AS t(c1);
Result
["a","b","c"]
Пример 4
В следующем примере возвращается результат с двумя столбцами. Первый столбец содержит object_id значение. Второй столбец содержит массив JSON, содержащий имена столбцов. Столбцы в массиве JSON упорядочены на 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"] |
Пример 5
В следующем примере возвращается результат с четырьмя столбцами из инструкции SELECT, содержащей sum и JSON_ARRAYAGG агрегаты с помощью GROUP BY GROUPING SETS. Первые два столбца возвращают id значение и type значение столбца. Третий столбец total_amount возвращает значение статистической суммы СУММ в столбце amount . Четвертый столбец json_total_amount возвращает значение JSON_ARRAYAGG агрегата в столбце amount .
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] |
Пример 6
В следующем примере возвращается массив JSON в виде типа JSON .
SELECT JSON_ARRAYAGG(1 RETURNING JSON);
Result
[1]