ホームページ > データベース > mysql チュートリアル > mysqlテーブルをピボットする方法:行を列に変換しますか?

mysqlテーブルをピボットする方法:行を列に変換しますか?

Barbara Streisand
リリース: 2025-01-25 11:32:13
オリジナル
498 人が閲覧しました

How to Pivot a MySQL Table: Transforming Rows into Columns?

フォームを列形式に変更します

Challenge

質問

HOSTID、ItemName、およびItemValue列を含むテーブルが与えられている場合は、以下に示す結果を押してください。

solution

ステップ1:興味のある列を選択

hostid A B C
1 10 3 0
2 9 0 40

okは、y値とx値(itemname)を提供する列を提供します。 ステップ2:基本テーブルを拡張

一意のx値ごとに追加の列を作成します。

ステップ3:グループ化と集約

groupid(hostID)および拡張テーブルを集計します。

ステップ4:Beautify(オプション)

<code class="language-sql">CREATE VIEW history_extended AS
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>
ログイン後にコピー

null値をゼロに置き換えて、より明確な外観を取得します。

予防策と制限

<code class="language-sql">CREATE VIEW history_itemvalue_pivot AS
SELECT
    hostid,
    SUM(A) AS A,
    SUM(B) AS B,
    SUM(C) AS C
FROM history_extended
GROUP BY hostid;</code>
ログイン後にコピー

拡張列で使用される値と欠損値のデフォルト値をカスタマイズできます。 重合関数(たとえば、最大)を調整できます。

複数の列をy値として使用するか、多数の視点列が必要な場合、このソリューションは適用できない場合があります。

<code class="language-sql">CREATE VIEW history_itemvalue_pivot_pretty AS
SELECT 
    hostid, 
    COALESCE(A, 0) AS A, 
    COALESCE(B, 0) AS B, 
    COALESCE(C, 0) AS C 
FROM history_itemvalue_pivot;</code>
ログイン後にコピー

以上がmysqlテーブルをピボットする方法:行を列に変換しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート