次の方法で共有


JSON_ARRAYAGG (Transact-SQL)

適用対象: Azure SQL データベース Azure SQL Managed Instance

SQL データまたは列の集計から JSON 配列を構築します。

代わりに集計から JSON オブジェクトを作成するには、JSON_OBJECTAGG を使用します。

Note

json集計関数JSON_OBJECTAGGJSON_ARRAYAGGの両方が現在、Azure SQL Database と Azure SQL Managed Instance (Always-up-to-date 更新ポリシーで構成) のプレビュー段階にあります。 .

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

省略可能。 json_null_clause は、value_expressionJSON_ARRAYAGG の場合に、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

次の例では、結果セットから 3 つの要素を含む JSON 配列を構築します。

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

結果

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

例 3

次の例では、列の値で並べ替えられた 3 つの要素を含む JSON 配列を構築します。

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

結果

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

例 4

次の列は 2 つの列を持つ結果を返します。 最初の列には object_id 値が含まれています。 2 番目の列には、列の名前を含む 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"]