任何人都可以帮我修改以下查询而不使用分析函数和聚合函数,因为我必须使用它来创建具有FAST刷新的物化视图。
SELECT bp_id,
updtd_dt,
RANK () OVER (PARTITION BY bp_id ORDER BY updtd_dt DESC)spec_rn
FROM tr_ods.ods_bp_specialty
WHERE updtd_dt IS NOT NULL
答案 0 :(得分:0)
来自Oracle Database Data Warehousing Guide (12C)聚合:
快速刷新的一般限制
...
它不能在SELECT中包含分析函数(例如,RANK) 子句。
和
使用聚合的物化视图快速刷新的限制
...
仅支持SUM,COUNT,AVG,STDDEV,VARIANCE,MIN和MAX进行快速刷新。
聚合函数必须仅作为最外层部分发生 表达。也就是说,AVG(AVG(x))或AVG(x)+ AVG(x)等聚合 是不允许的。
对于每个聚合,例如AVG(expr),相应的COUNT(expr) 必须在场。 Oracle建议指定SUM(expr)。看到 使用具有聚合的物化视图的要求 的信息。
在这些限制下,我无法看到任何可以模拟RANK()
函数的方法。
答案 1 :(得分:0)
您可以在Inner / outer Query中的相同表名上使用子查询。