다음을 통해 공유


JSON_OBJECTAGG(Transact-SQL)

적용 대상:Azure SQL Database

SQL 데이터 또는 열 집계에서 JSON 개체를 생성합니다.

키/값 쌍을 입력 값, 열, 변수 참조로 지정할 수 있습니다.

대신 집계에서 JSON 배열을 만드려면 JSON_ARRAYAGG를 사용합니다.

참고 항목

현재 두 json 집계 함수는 JSON_ARRAYAGGJSON_OBJECTAGG 모두 Azure SQL Database에 대한 미리 보기로 제공됩니다.

Transact-SQL 구문 표기 규칙

구문

JSON_OBJECTAGG ( json_key_value [ json_null_clause ] )
 
json_key_value ::= <json_name> : <value_expression> 

json_null_clause ::= NULL ON NULL | ABSENT ON NULL 

인수

json_key_value

JSON 개체의 키/값 쌍.

json_null_clause

선택 사항. 값이 NULL이면 개체의 전체 속성을 생략하거나 JSON null을 속성 값으로 사용합니다. 생략하는 경우, NULL ON NULL이(가) 기본값입니다.

예제

예 1

다음 예제에서는 하나의 키와 null 값이 있는 JSON 개체를 반환합니다.

select JSON_OBJECTAGG ( 'key':null )

결과

{"key":null}

예제 2

다음 예제에서는 결과 집합의 세 가지 속성을 사용하여 JSON 개체를 생성합니다.

SELECT JSON_OBJECTAGG( c1:c2 )
FROM (
    VALUES('key1', 'c'), ('key2', 'b'), ('key3','a')
) AS t(c1, c2);

결과

{"key1":"c","key2":"b","key3":"a"}

예 3

다음 예제에서는 두 개의 열이 결과로 반환됩니다. 첫 번째 열에는 object_id 값이 포함됩니다. 두 번째 열에는 키가 열 이름이고 값이 column_id인 JSON 개체가 포함됩니다.

SELECT TOP(5) c.object_id, JSON_OBJECTAGG(c.name:c.column_id) AS columns
  FROM sys.columns AS c
 GROUP BY c.object_id;

결과

object_id column_list
3 {"bitpos":12,"cid":6,"colguid":13,"hbcolid":3,"maxinrowlen":8,"nullbit":11,"offset":10,"ordkey":7,"ordlock":14,"rcmodified":4,"rscolid":2,"rsid":1,"status":9,"ti":5}
5 {"cmprlevel":9,"fgidfs":7,"fillfact":10,"idmajor":3,"idminor":4,"lockres":17,"maxint":13,"maxleaf":12,"maxnullbit":11,"minint":15,"minleaf":14,"numpart":5,"ownertype":2,"rcrows":8,"rowsetid":1,"rsguid":16,"scope_id":18,"status":6}
6 {"cloneid":6,"dbfragid":8,"id":1,"partid":3,"rowsetid":7,"segid":5,"status":9,"subid":2,"version":4}
7 {"auid":1,"fgid":5,"ownerid":3,"pcdata":10,"pcreserved":11,"pcused":9,"pgfirst":6,"pgfirstiam":8,"pgroot":7,"status":4,"type":2}
8 {"fileid":2,"filename":4,"name":3,"status":1}