ホームページ >データベース >mysql チュートリアル >複数の列を持つ SQL テーブルを転置するにはどうすればよいですか?
質問:
複数の列を含む SQL テーブルを転置する必要があります。例:
<code>Day A B --------- Mon 1 2 Tue 3 4 Wed 5 6 Thu 7 8 Fri 9 0</code>
次の形式に移調します:
<code>Value Mon Tue Wed Thu Fri -------------------------- A 1 3 5 7 9 B 2 4 6 8 0</code>
解決策:
複数の列を含むテーブルを転置するには、UNPIVOT 関数と PIVOT 関数を一緒に使用できます。
<code class="language-sql">select day, col, value from yourtable unpivot ( value for col in (A, B) ) unpiv</code>
<code class="language-sql">select * from ( select day, col, value from yourtable unpivot ( value for col in (A, B) ) unpiv ) src pivot ( max(value) for day in (Mon, Tue, Wed, Thu, Fri) ) piv</code>
これにより、必要な転置テーブルが生成されます。
追加メモ:
<code class="language-sql">select * from ( select day, col, value from yourtable cross apply ( values ('A', ACalls), ('B', BCalls) ) c (col, value) ) src pivot ( max(value) for day in (Mon, Tue, Wed, Thu, Fri) ) piv</code>
<code class="language-sql">select * from ( select LEFT(datename(dw,datetime),3) as DateWeek, col, value from DataTable cross apply ( values ('A', ACalls), ('B', BCalls) ) c (col, value) ) src pivot ( sum(value) for dateweek in (Mon, Tue, Wed, Thu, Fri) ) piv</code>
以上が複数の列を持つ SQL テーブルを転置するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。