KingbaseES V8兼容Oracle的pivot及unpivot语法

1、Oracle pivot和unpivot简介
pivot函数:行转列函数:
  语法:pivot(任一聚合函数 for 需专列的值所在列名 in (需转为列名的值));
unpivot函数:列转行函数:
  语法:unpivot(新增值所在列的列名 for 新增列转为行后所在列的列名 in (需转为行的列名));
执行原理:将pivot函数或unpivot函数接在查询结果集的后面。相当于对结果集进行处理。

示例:
create table testpivot(姓名 varchar(100),课程 varchar(100),分数 int);
insert into testpivot values (‘张三’,‘语文’,‘74’);
insert into testpivot values (‘张三’,‘语文’,‘75’);
insert into testpivot values (‘张三’,‘数学’,‘83’);
insert into testpivot values (‘张三’,‘物理’,‘93’);
insert into testpivot values (‘李四’,‘语文’,‘74’);
insert into testpivot values (‘李四’,‘数学’,‘84’);
insert into testpivot values (‘李四’,‘物理’,‘94’);

在这里插入图片描述

–oracle
select * from testpivot pivot(max(分数) for 课程 in (‘语文’,‘数学’,‘物理’)) a;
在这里插入图片描述

CREATE TABLE unpivot_test (
id NUMBER,
customer_id NUMBER,
product_code_a NUMBER,
product_code_b NUMBER,
product_code_c NUMBER,
product_code_d NUMBER
);

INSERT INTO unpivot_test VALUES (1, 101, 10, 20, 30, NULL);
INSERT INTO unpivot_test VALUES (2, 102, 40, NULL, 50, NULL);
INSERT INTO unpivot_test VALUES (3, 103, 60, 70, 80, 90);
INSERT INTO unpivot_test VALUES (4, 104, 100, NULL, NULL, NULL);

select *
from unpivot_test
unpivot include nulls(quantity for product_code in(product_code_a as ‘A’, product_code_b as ‘B’,
product_code_c as ‘C’, product_code_d as ‘D’));
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值