ホームページ >データベース >mysql チュートリアル >mysqlで行と列の変換を実装する方法

mysqlで行と列の変換を実装する方法

PHPz
PHPzオリジナル
2023-04-17 16:45:033177ブラウズ

MySQL は、人気のあるリレーショナル データベース管理システムです。強力な行-列変換機能を提供し、ユーザーはより便利にデータを操作できます。行と列の変換とは何ですか?行-列変換とは、表の行データを列データに変換したり、列データを行データに変換したりすることを指します。この記事ではMySQLの行・列変換機能の使い方を紹介します。

  1. 行データを列データに変換する

MySQL では、PIVOT 関数と UNPIVOT 関数を使用して、テーブル内の行データを列データに変換できます。 PIVOT 関数はテーブルの行データを列データに変換し、UNPIVOT 関数はテーブルの列データを行データに変換します。

以下は例です。学生の名前、科目、成績を含むテーブル students があるとします。

##小红英語85#PIVOT 関数を使用して、生徒の成績を次の形式に変換できます:
学生の名前 件名 スコア
Xiao明 数学 90
小明 英語 80
小红 数学 95

生徒名 ##シャオ・ミン9080小红9585##次のコードを使用して実装します:
SELECT
  学生姓名,
  MAX(CASE WHEN 科目 = '数学' THEN 成绩 ELSE NULL END) AS 数学成绩,
  MAX(CASE WHEN 科目 = '英语' THEN 成绩 ELSE NULL END) AS 英语成绩
FROM students
GROUP BY 学生姓名;
このうちMAX関数はスコアの最大値を求める関数であり、条件を満たさない場合はNULLが返されます。
数学のスコア 英語のスコア

列データを行データに変換する

    PIVOT 関数に対応するのが UNPIVOT 関数で、テーブル内の列データを行データに変換するために使用されます。以下に例を示します。各営業担当者の毎月の売上記録を含む売上テーブルがあるとします。

営業マン1か月の売上小明1000012000
2か月の売上 3か月の売上
20000 15000 小赤
18000 11000 ## UNPIVOT 関数を使用して、販売レコードを次の形式に変換できます。

営業担当者

月営業 シャオ・ミン1月10000小明2月20000小明3月15000 1200018000##小红 3月 11000
SELECT
  销售员,
  MONTH,
  销售额
FROM sales
UNPIVOT(
  销售额 FOR MONTH IN ([1月], [2月], [3月])
) AS unpvt;
概要
##小红 1月
小红 2月
次のコードを使用して実装します。 このうち、UNPIVOT 関数の FOR 句は、変換された列を指定するために使用されます。この例では、変換対象の列を[1月]、[2月]、[3月]と指定しています。
ルート変換は、特にレポートやビジネス データ分析に関連するシナリオにおいて、非常に実用的な機能です。 MySQL は、ユーザーにとってデータ変換をより便利にするために PIVOT 関数と UNPIVOT 関数を提供します。この 2 つの機能を使いこなすことができると、データベースの操作が非常に便利になります。

以上がmysqlで行と列の変換を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。