pivot函数迁移之Oracle至MogDB

2023年 10月 18日 63.9k 0

原作者:罗炳森

  • 适用范围
  • 问题概述
  • 问题原因
  • 解决方案

适用范围

Oracle迁移至MogDB

问题概述

在进行Oracle迁移至MogDB的时候,MogDB执行有pivot函数的语句报错

问题原因

MogDB目前不支持pivot函数

解决方案

改写语句,例子如下:

Oracle中pivot语句:

SELECT
"XMBH","XMMC","XMKNX","HTID","HTQYRQ","XSMC","XSBM","XMJL","SRZE",
"YWCSRZE","'业务体系'","'售前体系'","'交付体系'"
FROM
SRCOSTVIEW
pivot(
SUM(systemcost) for system in ('业务体系' as 业务体系,'售前体系'
as 售前体系,'交付体系' as 交付体系)

MogDB中改写语句:

select XMBH,
XMMC,
XMKNX,
HTID,
HTQYRQ,
XSMC,
XSBM,
XMJL,
SRZE,
YWCSRZE,
sum(case
when system = '业务体系' then
systemcost
end) as 业务体系,
sum(case
when system = '售前体系' then
systemcost
end) as 售前体系,
sum(case
when system = '交付体系' then
systemcost
end) as 交付体系
from SRCOSTVIEW
group by XMBH, XMMC, XMKNX, HTID, HTQYRQ, XSMC, XSBM, XMJL, SRZE, YWCSRZE;
)

改写模板:

select groupbycolumn, ---select列 去掉 for ... in 里面的列
sum(case when for后面的列='in里面的别名' then pivot后面的聚合函数里面的列 end) as in里面的别名,
................in里面有多少个别名就有多少个sum case when.................................
sum(case when for后面的列='in里面的别名' then pivot后面的聚合函数里面的列 end) as in里面的别名
from t_score
group by groupbycolumn;

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论