Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: SQL Server 2025 (17.x) Предварительная версия
базы данных
SQL Azure Управляемого экземпляра
SQL Azureв Microsoft Fabric Preview
Создает массив JSON из агрегирования данных ИЛИ столбцов SQL.
JSON_ARRAYAGG
также можно использовать в инструкции с SELECT
предложениемGROUP BY GROUPING SETS
.
Чтобы создать объект JSON из агрегата, используйте JSON_OBJECTAGG.
Агрегатные функции JSON_OBJECTAGG
json и JSON_ARRAYAGG
общедоступны для базы данных SQL Azure, Управляемого экземпляра SQL Azure (настроенного с политикой обновления Always-up-to-date), базы данных SQL в Microsoft Fabric и хранилище данных Fabric.
Соглашения о синтаксисе Transact-SQL
Syntax
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>
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 можно указать для упорядочивания входных строк в агрегат.
Examples
Example 1
В следующем примере возвращается пустой массив JSON.
SELECT JSON_ARRAYAGG(NULL);
Result
[]
Example 2
В следующем примере создается массив JSON с тремя элементами из результирующий набор.
SELECT JSON_ARRAYAGG(c1)
FROM (VALUES ('c'), ('b'), ('a')) AS t(c1);
Result
["c","b","a"]
Example 3
В следующем примере создается массив JSON с тремя элементами, упорядоченными по значению столбца.
SELECT JSON_ARRAYAGG( c1 ORDER BY c1)
FROM (
VALUES ('c'), ('b'), ('a')
) AS t(c1);
Result
["a","b","c"]
Example 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"] |
Example 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] |