複数の列を使用したデータのピボット
ピボット クエリは、データを縦長の狭い形式から幅広の表形式に再配置するために不可欠です。この特定のケースでは、org とposition という 2 つの列を含むピボット形式で表されたデータを、言語 (en、fi、sv) ごとに個別の列を含むより広い形式にピボットする必要があります。
Asおっしゃるとおり、CONNECT BY コマンドを使用したピボット クエリが役立つ可能性があります。ただし、PIVOT 演算子を使用したより簡単なアプローチは次のとおりです。
SELECT user_id, MAX(CASE WHEN lang = 'en' THEN org END) AS org_en, MAX(CASE WHEN lang = 'en' THEN position END) AS position_en, MAX(CASE WHEN lang = 'fi' THEN org END) AS org_fi, MAX(CASE WHEN lang = 'fi' THEN position END) AS position_fi, MAX(CASE WHEN lang = 'sv' THEN org END) AS org_sv, MAX(CASE WHEN lang = 'sv' THEN position END) AS position_sv FROM source GROUP BY user_id
MAX() 関数を使用して、各ユーザー ID と言語の組み合わせに関連付けられた最新の値を取得します。あるいは、特定の要件に応じて、SUM() などの集計関数を使用することもできます。
このクエリは目的の出力を生成します。
user_id | org_fi | position_fi | org_en | position_en | org_sv | position_sv |
---|---|---|---|---|---|---|
1001 | USD | Bossa | USE | Boss | NULL | NULL |
1002 | NULL | NULL | NULL | NULL | GWR | Dim |
1003 | GGA | DCS | NULL | NULL | GCA | DDD |
MAX() 関数を調整することを忘れないでください。実際のデータと要件に基づく CASE 式。このアプローチでは、複数の列を使用してデータを効果的にピボットすることができ、分析やプレゼンテーションのニーズに適した形式でデータを柔軟に表現できるようになります。
以上がSQL を使用して複数の列 (org とposition) を持つデータをより幅広い形式にピボットする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。