すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:複数行のデータを1行にマージする

最終更新日:Jan 17, 2025

このトピックでは、SQL文を使用して複数行のデータを1行にマージする方法について説明します。

サンプルデータ

クラス

性別

name

1

M

LiLei

1

F

HanMM

1

M

Jim

1

F

HanMM

2

F

Kate

2

M

Peter

  • 例1: 次のステートメントを実行して、class列の値が同じである行をname列の値に基づいて1つの行にマージし、name列の値を重複排除します。 ネストされたサブクエリを使用して重複排除を実装できます。

    SELECT class, wm_concat(distinct ',', name) as names FROM students GROUP BY class;
    説明

    wm_concat関数は、データを集約するために使用されます。 詳細については、「集計関数」をご参照ください。

    次の結果が返されます。

    クラス

    名前

    1

    LiLei,HanMM,Jim

    2

    Kate,Peter

  • 例2: 次のステートメントを実行して、class列の値に基づいて男性と女性の数に関する統計を収集します。

    SELECT 
    class
    ,SUM(CASE WHEN gender = 'M' THEN 1 ELSE 0 END) AS cnt_m
    ,SUM(CASE WHEN gender = 'F' THEN 1 ELSE 0 END) AS cnt_f
    FROM students
    GROUP BY class;

    次の結果が返されます。

    クラス

    cnt_m

    cnt_f

    1

    2

    2

    2

    1

    1