적용 대상: Microsoft Fabric의 SQL Server 2025(17.x)
Azure SQL Database
Azure SQL Managed Instance
SQL 데이터베이스
SQL 데이터 또는 열 집계에서 JSON 배열을 생성하세요.
JSON_ARRAYAGG 는 절이 있는 SELECT 문 GROUP BY GROUPING SETS 에도 사용할 수 있습니다.
비고
대신 집계에서 JSON 개체를 만들려면 JSON_OBJECTAGG 사용합니다.
두 json 집계 함수는 JSON_OBJECTAGG 다음과 같습니다.JSON_ARRAYAGG
일반적으로 Azure SQL Database, Azure SQL Managed Instance( SQL Server 2025 또는 Always-up-to-dateupdate policy**), Microsoft Fabric의 SQL 데이터베이스 및 패브릭 데이터 웨어하우스에 사용할 수 있습니다.
SQL Server 2025 (17.x) 프리뷰 버전에서.
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 value_expression 때 함수의 JSON_ARRAYAGG 동작을 제어하는 데 사용할 수 있습니다.NULL
NULL ON NULL 옵션은 JSON 배열에서 요소 값을 생성할 때 SQL NULL 값을 JSON null 값으로 변환합니다. 값이 ABSENT ON NULL인 경우 NULL옵션은 JSON 배열의 요소를 생략합니다. 생략하는 경우, ABSENT ON NULL이(가) 기본값입니다.
order_by_clause
Optional. 결과 JSON 배열의 요소 순서를 지정하여 입력 행을 집계로 정렬할 수 있습니다.
반환 값
nvarchar(max) 형식의 유효한 JSON 배열 문자열을 반환합니다.
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
다음 예제에서는 GROUP BY GROUPING SETS를 사용하여 SUM 및 JSON_ARRAYAGG 집계를 포함하는 SELECT 문에서 4개의 열이 있는 결과를 반환합니다. 처음 두 열은 열 값과 id 열을 반환 type 합니다. 세 번째 열은 열 total_amount 에 대한 SUM 집계 값을 반환합니다 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]