1.1 oracle 構文 wmsys.wm_concat():
SELECT
NAME,
wmsys.wm_concat(subject_1) subject_1
FROM
table_name
GROUP BY
NAME
1.2 oracle 構文 LISTAGG() (これは Oracle 11g 以降で提供される構文であることに注意してください):
LISTAGG(measure_expr [, 'delimiter']) WITHIN GROUP (order_by_clause) [OVER query_partition_clause]
パラメータの説明
OVER は、OVER 句を使用して計算のウィンドウを定義します。
measure_expr には任意の式を指定できます。メジャー列の Null 値は無視されます。
delimiter は、メトリック値を区切るために使用される文字列を指定します。この句はオプションであり、デフォルトは NULL です。
SELECT
NAME, listagg(subject_1, ',') inside GROUP (ORDER BY NAME)
FROM table_name
GROUP BY NAME
2.1 Oracle 構文 wmsys.wm_concat():
Oracle の wm_concat() を通じて、複数の列の結合を実現できます。
TK_USER_INFO
グループからNAME、wmsys.wm_concat(age || '|' || address) メッセージを NAME で選択します。
知らせ:
1. 上記の SQL で、|| '|' || は 2 つの列が | で区切られていることを意味し、'|' は任意の区切り文字に置き換えることができます
1.3 mysql语法group_concat:
SELECT
NAME,
GROUP_CONCAT(distinct subject_1 order by subject_1 asc separator ',') subject_1
FROM
table_name
GROUP BY
NAME
2.2 mysql语法CONCAT()
tk_user_info から名前、CONCAT(年齢、住所) メッセージを選択します。
知らせ:
1. CONCAT スプライシングの結果にはセパレータがありません
2. 右側の連結列が null の場合は、null を返します。
2.3 mysql 構文 CONCAT_WS()
select name, CONCAT_WS(',',age ,address) msg from tk_user_info;
知らせ:
1. この関数はセパレータを定義できます。CONCAT_WS() は CONCAT With Separator を表します。
2. 構文は CONCAT_WS(separator,str1,str2,…) で、最初のパラメータはセパレータ、その他は結合された列です。
2.4 mysql 構文 GROUP_CONCAT()
tk_user_info グループから名前、GROUP_CONCAT(年齢、'、'、アドレス) メッセージを名前で選択します。
知らせ:
1. その構文は次のとおりです (複数行のスプライシングに関する上記の説明と同様に、冗長性の排除、ソート、セパレータを実行できます。異なるスプライシング列には異なるセパレータを含めることができます)。
GROUP_CONCAT([DISTINCT] expr [,expr …]
[ORDER BY {unsigned_integer |col_name | Formula} [ASC | DESC] [,col …]]
[SEPARATOR str_val])
2. この SQL は、特定の列をグループ化した後に列を結合するために使用されるため、SQL の後に group by を続ける必要があります。