建表語句:
set foreign_key_checks=0;
-- ----------------------------
-- table structure for tb
-- ----------------------------
drop
table
ifexists
`tb`;
create
table
`tb` (
`姓名`
varchar(10) default
null,
`課程`
varchar(10) default
null,
`分數`
int(11) default
null
) engine=innodb default charset=utf8;
-- ----------------------------
-- records of tb
-- ----------------------------
insert
into
`tb`
values ('李四', '物理', '22');
insert
into
`tb`
values ('李四', '數學', '53');
insert
into
`tb`
values ('張三', '物理', '35');
insert
into
`tb`
values ('李四', '語文', '52');
insert
into
`tb`
values ('張三', '語文', '52')
表結構如下:
實現如下效果:
查詢語句如下:
select
姓名,max(
case
when 課程 = '語文'
then
分數else
0end
) 語文,
max(
case
when 課程 = '數學'
then
分數else
0end
) 數學,
max(
case
when 課程 = '物理'
then
分數else
0end
) 物理
from
tbgroup
by 姓名;
建表語句:
drop
table
ifexists
`tb2`;
create
table
`tb2` (
`姓名`
varchar(10) default
null,
`語文`
int(11) default
null,
`數學`
int(11) default
null,
`物理`
int(11) default
null
) engine=innodb default charset=utf8;
-- ----------------------------
-- records of tb2
-- ----------------------------
insert
into
`tb2`
values ('張三', '21', '212', '111');
insert
into
`tb2`
values ('李四', '2', '212', '2');
表結構如下:
實現如下效果:
查詢語句:
select
姓名,'語文'
as 課程,
語文 as 分數
from
tb2union
allselect
姓名,'數學'
as 課程,
數學 as 分數
from
tb2union
allselect
姓名,'物理'
as 課程,
物理 as 分數
from
tb2
總結:以上在實際開發應用中使用不是很好,在這只是做個記錄,個人覺得實際開發中在業務中實現行列轉換。 hive行列轉換面試題
一 行轉列的使用 問題 hive如何將 a b 1 a b 2 a b 3 c d 4 c d 5 c d 6 變為 a b 1,2,3 c d 4,5,6 資料 test.txt a b 1 a b 2 a b 3 c d 4 c d 5 c d 6 答案 1.建表 drop table tmp ...
SQL 行列轉置 常見面試題(一)
常見面試題如下 先來分析一下 第一步將course 裡面的課程轉換為列標題,常用 case when 就能解決。select 學號 max case when 課程號 0001 then 成績 end as 語文 max case when 課程號 0002 then 成績 end as 數學 ma...
sql行列轉換
問題 如果上述兩表互相換一下 即表結構和資料為 姓名 語文 數學 物理 張三 74 83 93 李四 74 84 94 想變成 得到如下結果 姓名 課程 分數 李四 語文 74 李四 數學 84 李四 物理 94 張三 語文 74 張三 數學 83 張三 物理 93 create table tb ...