ホームページ >データベース >mysql チュートリアル >SQL で複数の列 (user_id と lang) を使用してデータをピボットする方法

SQL で複数の列 (user_id と lang) を使用してデータをピボットする方法

DDD
DDDオリジナル
2024-12-18 02:34:13459ブラウズ

How to Pivot Data Using Multiple Columns (user_id and lang) in SQL?

複数の列を使用したデータのピボット

提供されたデータセットでは、現在、データはプライマリ識別子として user_id 列を使用してピボットされています。ただし、望ましい結果は、user_id と lang の両方を主識別子として使用してデータをピボットすることです。

これを実現するには、PIVOT 関数を使用できます。 PIVOT 関数は、集計値を取得し、それを 1 つ以上の列ごとにグループ化し、グループごとに新しい列を作成します。この場合、org 列とposition 列は lang によって集約され、グループ化されます。

SQL クエリ

次の SQL クエリは、複数の列を使用してデータをピボットする方法を示しています。

SELECT *
FROM source
PIVOT (
    MIN(org) AS org,
    MIN(position) AS position
    FOR lang IN('EN' AS en, 'FI' AS fi, 'SV' AS sv)
);
  • SELECT 句はソース テーブルからすべての列を取得します。
  • FROM 句は、データの起点としてソース テーブルを指定します。
  • PIVOT 句は、ピボット操作を実行します。

    • MIN(org) は、組織の最小値を計算します。
    • MIN(position) は、各グループの位置列の最小値を計算します。 group.
    • FOR lang IN('EN' AS en, 'FI' AS fi, 'SV' AS sv) は、グループ化列とそれに対応する別名を定義します。

Result

クエリの結果は、次のようなピボットされたデータセットです。 columns:

  • user_id: ユーザー識別子。
  • org_en: 英語の優先言語に関連付けられた組織。
  • position_en: 英語の優先言語に関連付けられた役職。
  • org_fi: フィンランド語に関連する組織priority.
  • position_fi: フィンランド語の優先言語に関連付けられた役職。
  • org_sv: スウェーデン語の優先言語に関連付けられた組織。
  • position_sv: スウェーデン語の優先言語に関連付けられた役職。

以上がSQL で複数の列 (user_id と lang) を使用してデータをピボットする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。