mysqlでは、テーブルの行が列に変換され、手順が必要です。
ステップ1:xとyの値を決定
最初に、視点表のx値(列)とy値(行)の列を決定します。この例では、HostIDは値として使用され、itemNameはX値として使用されます。
ステップ2:追加を追加します対応する値を含む各X値に新しい列を追加します。たとえば、x値a、b、およびcの場合、以下に示すように、ケースステートメントを使用して列a、b、およびcを追加します。 ステップ3:グループ化と集約
拡張テーブルはy値列によって支払われ(この例で)、新しい列は重合関数(合計など)を使用して集約されます。
<code class="language-sql">SELECT history.*, CASE WHEN itemname = "A" THEN itemvalue END AS A, CASE WHEN itemname = "B" THEN itemvalue END AS B, CASE WHEN itemname = "C" THEN itemvalue END AS C FROM history;</code>
ステップ4:Beautify(オプション)
必要に応じて、ニュートラル値(0など)を使用してヌル値を置き換えて、テーブルを読みやすくすることができます。
<code class="language-sql">SELECT hostid, SUM(A) AS A, SUM(B) AS B, SUM(C) AS C FROM history_extended GROUP BY hostid;</code>
追加の列で使用される値は、特定のニーズに応じて調整できます。
使用される重合関数は、結果(カウント、最大など)から異なる場合があります。
<code class="language-sql">SELECT hostid, COALESCE(A, 0) AS A, COALESCE(B, 0) AS B, COALESCE(C, 0) AS C FROM history_itemvalue_pivot;</code>
句ごとにグループ内の複数の列を推測することにより、複数の列をy値として使用できます。 このソリューションは、限られた数の視点テーブルに適していますが、多数の列を持つテーブルでは非常に複雑になります。
以上がMySQL で行を列に効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。