数仓知识04:行转列、列转行的含义及SQL示例

在构建数仓或做数据分析时,需要对原始数据的结构进行一定的处理,有时涉及到“行转列”,有时涉及到“列转行”,那么这两个转换的方式具体是什么,有什么差异,今天给大家做一下讲解。

行转列:

即将多行一列数据转为一行多列显示。通常转化后将某一列分类后的值作为新的列名,将此值对应的多行数据显示成一行。

列转行:

即将一行多列数据转成多行一列显示。通常将转化后的列名为某一行中某一列的值,来识别原先对应的数据。

示例:

类型 原始表和数据 行转列后 SQL语句
行转列 数仓知识04:行转列、列转行的含义及SQL示例_第1张图片 select sname,
sum(case when subject='语文' then score else null end)as 语文,
sum(case when subject='数学' then score else null end)as 数学,
sum(case when subject='英语' then score else null end)as 英语
from table01
group by sname;
类型 原始表和数据 列转行后 SQL语句
列转行 数仓知识04:行转列、列转行的含义及SQL示例_第2张图片 select sname,'语文' subject,sum(语文) as score from table02 group by sname
union all
select sname,'数学' subject,sum(数学) as score
from table02 group by sname
union all
select sname,'英语' subject,sum(英语) as score
from table02 group by sname
order by sname;

有些数据分析工具还会将“行转列”为“透视列”,称“列转行”为“逆透视列”,例如PowerBI。

参考文档:

  • 行转列和列转行,经典案例解析_下雨天看彩虹-CSDN博客
  • 重温SQL——行转列,列转行 - 潇湘隐者 - 博客园 (cnblogs.com)
  • sql server行列转换怎么写-百度经验 (baidu.com)

相反的概念介绍:行转列、列转行 - 知乎 (zhihu.com),相反的概念-功能产品:Kettle:kettle 行转列 与 列转行 - 简书 (jianshu.com)

你可能感兴趣的:(数据仓库,sql,数据库,database)