値を連結した文字列を作成する集約関数です。
Synopsis
XMLAGG ([ DISTINCT ] string-expr [%FOREACH(col-list)] [%AFTERHAVING])
引数
string-expr 文字列として評価する SQL 式。一般的には、これはデータを取得する列の名前です。
%FOREACH(col-list) オプション — 列名、またはコンマで区切られた列名のリスト。%FOREACH の詳細は、"SELECT" を参照してください。
%AFTERHAVING オプションHAVING 節にある条件を適用します。
概要
XMLAGG 集約関数は、string-expr のすべての値を連結した文字列を返します。XMLAGG は、値を連結した文字列を返します。コンマ区切りの値のリストを返すには、これと似た LIST 関数を使用します。
XML および XMLAGG
XMLAGG の一般的な使用方法の 1 つに、列の各データ・アイテムにタグ付けすることがあります。これは以下の例で示すように、XMLAGGXMLELEMENT を組み合わせて行います。
SELECT XMLAGG(XMLELEMENT("para",Home_State))
FROM Sample.Person
この結果、以下のような文字列が出力されます。
<para>LA</para><para>MN</para><para>LA</para><para>NH</para><para>ME</para>...
以下の例は、Sample.Person テーブルの FavoriteColors 列内にあるすべての個別値の連結文字列を作成します。したがって、すべての行の All_Colors 列の値は同じになります。ある行が FavoriteColors に NULL 値を持つと、この値は連結文字列に含まれなくなります。データ値は、内部形式で返されます。
SELECT Name,FavoriteColors,
   XMLAGG(DISTINCT FavoriteColors) AS All_Colors_In_Table
FROM Sample.Person
ORDER BY FavoriteColors
以下の例は、各州の Home_City 列内にあるすべての個別値の連結文字列を作成します。同じ州のすべての行には、その州の個別の市の値すべてのリストが含まれます。
SELECT Home_State, Home_City,
   XMLAGG(DISTINCT Home_City %FOREACH(Home_State)) AS All_Cities_In_State
FROM Sample.Person
ORDER BY Home_State
例えば、以下の AutoClub のようなテーブルがあるとします。
Name Make Model Year
Smith,Joe Pontiac Firebird 1971
Smith,Joe Saturn SW2 1997
Smith,Joe Pontiac Bonneville 1999
Jones,Scott Ford Mustang 1966
Jones,Scott Mazda Miata 2000
クエリは以下のとおりです。
SELECT DISTINCT Name, XMLAGG(Make) AS String_Of_Makes
FROM AutoClub WHERE Name = 'Smith,Joe'
これは、以下を返します。
Name String_Of_Makes
Smith,Joe PontiacSaturnPontiac
クエリは以下のとおりです。
SELECT DISTINCT Name, XMLAGG(DISTINCT Make) AS String_Of_Makes
FROM AutoClub WHERE Name = 'Smith,Joe'
これは、以下を返します。
Name String_Of_Makes
Smith,Joe PontiacSaturn
関連項目
LIST 関数
XMLELEMENT 関数
SELECT
集約関数