Rumah > pangkalan data > tutorial mysql > SQL语句行列转换方法有哪些

SQL语句行列转换方法有哪些

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2016-06-07 16:17:19
asal
1444 orang telah melayarinya

SQL语句行列转换的两种方法 case...when和pivot函数应用,运用pivot 函数只支持数据库版本2005以上的。一般运用case when else end 的方法比较多,比较普遍 /*创建数据库*/ CREATE DATABASE tmp go USE tmp go /*创建数据库测试表*/ CREATE TABLE [Scores] (

  SQL语句行列转换的两种方法 case...when和pivot函数应用,运用pivot 函数只支持数据库版本2005以上的。一般运用case when else end 的方法比较多,,比较普遍

  /*创建数据库*/

  CREATE DATABASE tmp

  go

  USE tmp

  go

  /*创建数据库测试表*/

  CREATE TABLE [Scores]

  (

  [ID] INT IDENTITY(1, 1)

  PRIMARY KEY ,

  [Student] VARCHAR(20) ,

  [Subject] VARCHAR(30) ,

  [Score] FLOAT

  )

  go

  TRUNCATE TABLE Scores

  /*插入数据库测试数据信息*/

  INSERT INTO Scores

  ( Student, Subject, Score )

  VALUES ( 'test001', '语文', '90' )

  INSERT INTO Scores

  ( Student, Subject, Score )

  VALUES ( 'test001', '英语', '85' )

  INSERT INTO Scores

  ( Student, Subject, Score )

  VALUES ( 'text002', '语文', '90' )

  INSERT INTO Scores

  ( Student, Subject, Score )

  VALUES ( 'text002', '英语', '80' )

  INSERT INTO Scores

  ( Student, Subject, Score )

  VALUES ( 'test003', '语文', '95' )

  INSERT INTO Scores

  ( Student, Subject, Score )

  VALUES ( 'test003', '英语', '85' )

  /*1. case when .......then else ....end 用法,行列转换*/

  SELECT Student AS '姓名' ,

  MAX(CASE Subject

  WHEN '语文' THEN Score

  ELSE 0

  END) AS '语文' ,--如果这个行是“语文”,就选此行作为列

  MAX(CASE Subject

  WHEN '英语' THEN Score

  ELSE 0

  END) AS '英语'

  FROM Scores

  GROUP BY Student

  ORDER BY Student

  /*2. pivot(聚合函数(要转成列值的列名)

  for 要转换的列

  in(目标列名)

  )*/

  SELECT Student AS '姓名' ,

  AVG(语文) AS '语文' ,

  AVG(英语) AS '英语'

  FROM Scores PIVOT( AVG(Score) FOR Subject IN ( 语文, 英语 ) )as NewScores

  GROUP BY Student

  ORDER BY Student ASC

 

Label berkaitan:
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Isu terkini
Laravel tidak membaca permintaan POST dengan FormData
daripada 1970-01-01 08:00:00
0
0
0
php - Bagaimana untuk mengoptimumkan sql ini?
daripada 1970-01-01 08:00:00
0
0
0
Lokasi ralat, pernyataan SQL
daripada 1970-01-01 08:00:00
0
0
0
node.js - isu async gulp.task
daripada 1970-01-01 08:00:00
0
0
0
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan