2 つの列を使用したデータのピボット
この質問は、各行がユーザーとそれに対応する組織を表す形式からデータをピボットする必要性について説明します。各行にユーザーとその組織、および言語ごとにグループ化された役職が含まれる形式に配置します。
提供された例は、元のデータがテーブルに格納されており、各行にユーザー ID、組織、役職、および言語が含まれていることを示しています。望ましい出力は、各行にユーザー ID、ユーザーの組織、各言語の位置が含まれるテーブルを作成することです。
これを実現するには、ピボット クエリを使用してデータを変換します。ユーザーが提供したクエリは開始点としては適していますが、目的の出力を達成するには追加の変更が必要です。
次の変更されたクエリは機能するはずです:
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;
このクエリは CASE を使用します。ステートメントを使用して、lang 列を目的の言語と比較し、条件が満たされる場合は、対応する組織または役職を返します。次に、MAX() 関数を使用して、各ユーザー ID の結果を集計します。
以上が2 つの列 (組織と役職) を使用して言語ごとにユーザー データをピボットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。