SQL行列转换

1.SQL行转列
建表:

create table public.row_change_column
(name varchar(100),
course varchar(100),
score int) ;

插入数据 :

insert into public.row_change_column
      select 'zhangsan','语文',82
union select 'zhangsan','数学',95
union select 'zhangsan','英语',80
union select 'lisi','语文',77
union select 'lisi','数学',90
union select 'lisi','英语',81
;

原始数据格式 :
在这里插入图片描述
行转列: 主要是通过case when 来对行进行判断

select 
name,
max(case course when '语文' then score else 0 end) as '语文',
max(case course when '数学' then score else 0 end) as '数学',
max(case course when '英语' then score else 0 end) as '英语'
from public.row_change_column
group by name

或者 :

select 
name,
max(case when course='语文' then score else 0 end) as '语文',
max(case when course='数学' then score else 0 end) as '数学',
max(case when course='英语' then score else 0 end) as '英语'
from public.row_change_column
group by name

在这里插入图片描述

2.列转行

建表 :

create table public.column_change_row (
product varchar(100),
btconn int ,
wificonn int ,
gpsconn int 
);

插入数据 :

insert into public.column_change_row
      select '大米',55,90,98
union select '一星',42,78,90
union select 'ov',67,88,97
;

原始数据格式 :
在这里插入图片描述
列转行 : 主要是通过union

select 
PRODUCT,
'BT' AS TYPE ,
btconn AS KPI
FROM public.column_change_row
UNION ALL 
select 
PRODUCT,
'WIFI' AS TYPE ,
wificonn AS KPI
FROM public.column_change_row
UNION ALL 
select 
PRODUCT,
'GPS' AS TYPE ,
gpsconn AS KPI
FROM public.column_change_row
ORDER BY PRODUCT,TYPE
;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值