【背景】
报表中有一大需求是透视表,目前有很多分析类应用也搭载了此类功能,那么我们能不能直接用SQL做透视表呢?
【分析】
BI类软件将透视表功能做在了前端,但是数据本身还是存储在数据库中,所以必然有方法可以用SQL直接实现透视表。
【心法】
透视表是任意选取一个普通表格中的一个字段作为行,另一个字段作为列,然后获得相应度量统计的结构。
用SQL实现透视表的关键:
- group by获得行
- case when 获得列
- select + sum获得度量统计值
【举例】
假设我们有一个名为sales的表,结构如下:
我们希望创建一个透视表,按日期汇总每种产品的销售额。目标结果如下:
SQL语句:
SELECT sale_date,SUM