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...