database compatibility assessment

ORACLE PIVOT / UNPIVOT 子句 迁移 postgresql 16 怎么改

迁衡基于规则 ora.syntax.pivot 分析 ORACLE PIVOT / UNPIVOT 子句 到 postgresql 16 的兼容性、改写路径与验证建议。

兼容性判定

真机验证:opengauss 6.0.5 · postgresql
支持度none
严重度major
置信度high
依据规则ora.syntax.pivot

怎么改

条件聚合(CASE + GROUP BY)或 tablefunc crosstab 扩展

判定说明

能力矩阵未声明该特征,按不支持处理并降低置信度

库侧 / 应用侧路径

库侧改造

可行:对象内改写为条件聚合(CASE + GROUP BY)

应用侧改造

可行:应用 SQL 改条件聚合;动态列需求上移应用层行转列

推荐路线:app_side。验证建议:全部枚举值输出列比对;新增枚举值不再自动出列,与业务确认

规则样例

SELECT * FROM sales PIVOT (SUM(amt) FOR quarter IN ('Q1' AS q1, 'Q2' AS q2))
SELECT * FROM wide_t UNPIVOT (val FOR metric IN (cpu, mem, disk))
SELECT quarter, SUM(amt) FROM sales GROUP BY quarter