秒懂mysql語句的行 列轉置

2021-09-24 11:26:00 字數 2272 閱讀 6277

1.原圖 轉為(圖形放錯位置了,請注意)

資料:

create table stu_score (

grade_id varchar(10) default null,

subject_name varchar(10) default null,

max_score int(10) default null

)insert into `stu_score`(`grade_id`,`subject_name`,`max_score`) values('1','語文',98);

insert into `stu_score`(`grade_id`,`subject_name`,`max_score`) values('2','數學',95);

insert into `stu_score`(`grade_id`,`subject_name`,`max_score`) values('2','政治',87);

insert into `stu_score`(`grade_id`,`subject_name`,`max_score`) values('5','語文',97);

insert into `stu_score`(`grade_id`,`subject_name`,`max_score`) values('5','數學',100);

insert into `stu_score`(`grade_id`,`subject_name`,`max_score`) values('5','政治',92);

執行語句

1.查詢出要求的結果格式

select

case grade_id when 1 then '一年級'

when 2 then '二年級'

when 5 then '五年級'

end as '年級',

case subject_name when '語文'then max_score end as '語文',

case subject_name when '數學'then max_score end as '數學',

case subject_name when '政治'then max_score end as '政治'

2,去除null

select

case grade_id when 1 then '一年級'

when 2 then '二年級'

when 5 then '五年級'

end as '年級',

ifnull(case subject_name when '語文'then max_score end,0)as '語文',

ifnull(case subject_name when '數學'then max_score end,0) as '數學',

ifnull(case subject_name when '政治'then max_score end,0) as '政治'

3.合併結果。

select

case grade_id when 1 then '一年級'

when 2 then '二年級'

when 5 then '五年級'

end as '年級',

max(ifnull(case subject_name when '語文'then max_score end,0)) as '語文',

max(ifnull(case subject_name when '數學'then max_score end,0)) as '數學',

max(ifnull(case subject_name when '政治'then max_score end,0)) as '政治'

使用動態SQL語句實現簡單的行列轉置(動態產生列)

原始資料如下圖所示 商品的銷售明細 date 業務日期 item 商品名稱 saleqty 銷售數量 建立測試資料 表 create table test date varchar 10 item char 10 saleqty int insert test values 2010 01 01 a...

使用動態SQL語句實現簡單的行列轉置(動態產生列)

原始資料如下圖所示 商品的銷售明細 date 業務日期 item 商品名稱 saleqty 銷售數量 建立測試資料 表 create table test date varchar 10 item char 10 saleqty int insert test values 2010 01 01 a...

使用動態SQL語句實現簡單的行列轉置(動態產生列)

原始資料如下圖所示 商品的銷售明細 date 業務日期 item 商品名稱 saleqty 銷售數量 建立測試資料 表 create table test date varchar 10 item char 10 saleqty int insert test values 2010 01 01 a...