다음을 통해 공유


JSON_ARRAYAGG(Transact-SQL)

적용 대상: Azure SQL Database

SQL 데이터 또는 열 집계에서 JSON 배열을 생성하세요.

그 대신 집계에서 JSON 개체를 만드려면 JSON_OBJECTAGG를 사용하세요.

참고 항목

현재 두 json 집계 함수는 JSON_OBJECTAGG, JSON_ARRAYAGG 모두 Azure SQL 데이터베이스에 대한 미리 보기로 제공됩니다.

Transact-SQL 구문 표기 규칙

구문

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>

인수

value_expression

값 식은 쿼리 또는 상수/리터럴의 열 또는 식일 수 있습니다.

json_null_clause

선택 사항. value_expressionJSON_ARRAYAGG인 경우, json_null_clause를 사용하여 NULL 함수의 동작을 제어할 수 있습니다. NULL ON NULL 옵션은 JSON 배열에서 요소 값을 생성할 때 SQL NULL 값을 JSON null 값으로 변환합니다. 값이 ABSENT ON NULL인 경우 NULL옵션은 JSON 배열의 요소를 생략합니다. 생략하는 경우, ABSENT ON NULL이(가) 기본값입니다.

order_by_clause

선택 사항. 결과 JSON 배열의 요소 순서를 지정하여 입력 행을 집계로 정렬할 수 있습니다.

예제

예 1

다음 예에서는 빈 JSON 배열을 반환합니다.

SELECT JSON_ARRAYAGG(null);

결과

[]

예제 2

다음 예제에서 결과 집합에 세 개의 요소가 있는 JSON 배열을 구성합니다.

SELECT JSON_ARRAYAGG( c1 )
FROM (
    VALUES ('c'), ('b'), ('a')
) AS t(c1);

결과

["c","b","a"]

예 3

다음 예제에서는 열 값으로 정렬된 세 개의 요소를 사용하여 JSON 배열을 생성합니다.

SELECT JSON_ARRAYAGG( c1 ORDER BY c1)
FROM (
    VALUES ('c'), ('b'), ('a')
) AS t(c1);

결과

["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;

결과

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"]