因为工作中经常需要excel或者报表输出,了解到pivot函数,查了部分资料,实在不够详尽,便想自己写一篇。pivot了解不深,只写写简单用法。
table t{
c1,c2,c3,c4
}
数据表t,其中有字段c1,c2,c3,c4
select * from (select c1,c2,c3,c4 from t) pivot(func(c1) for c2 in (v1,v2,v3))
其中func(c1)表示对c1使用func聚合函数
将输出的字段是c3,c4,v1,v2,v3,其中v1,v2,v3可以单独写别名。select * 可将*换成c3,c4,v1,v2,v3其中想要输出的值
这条语句相当于创建了一个表t2
table t2{
v1,v2,v3,
c3,c4}
其中v1相当于select func(c1) from t group by c2,c3,c4 where c2 = v1,v2,v3同理,同时输出的c3、c4也是根据以上规则分组出来的结果显示。
一下来看个实例:
CREATE table PRODUCT ( ID NUMBER(10) not null, PRODUCT_NAME VARCHAR2(50), SELL_TIME DATE, SELL_COUNT NUMBER(10), constraint PK_PRODUCT primary key (ID));
插入如下数据:
SELECT * FROM (SELECT A.PRODUCT_NAME, TO_CHAR(A.SELL_TIME,'mm') AS mon, A.SELL_COUNT FROM PRODUCT A WHERE TO_CHAR(A.SELL_TIME,'yyyy') = '2018') PIVOT(SUM(SELL_COUNT) FOR MON IN('01' M1, '02' M2, '03' M3, '04' M4, '05' M5, '06' M6, '07' M7, '08' M8, '09' M9, '10' M10, '11' M11, '12' M12));
结果如下:
温馨提示:pivot函数也适用于sql server
欢迎大家点个在看,分享至朋友圈小编推荐阅读:
一起认识数据库
SQL Server2014安装图文详解
Mysql安装图文详解!手把手教会您从下载到安装成功
Oracle安装图文详解!手把手教会您从下载到安装成功