2017-09-09 15 views
0

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

SELECT os1.bp_id、 os1.speciality_id、 os1.updtd_dt、 CASE os1.updtd_dt =(tr_ods.ods_bp_specialty OS2 FROM MAX(os2.updtd_dt) を選択os2.bp_id = os1.bp_id GROUP ELSE THEN END)os2.bp_id BY AS tr_ods.ods_bp_specialtyのOS1 – Jig232

+0

FROM spec_rn は、上記のクエリ – Jig232

+0

を実装するには、この正しい方法であり、それはmvierwに動作します – Jig232

答えて

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)が である必要があります。 SUM(expr)を指定することをお薦めします。詳細 の詳細については、 集計でのマテリアライズド・ビューの使用の要件を参照してください。

これらの制限の下でRANK()機能をシミュレートする方法はありません。

0

内部/外部クエリで同じテーブル名にサブクエリを使用できます。

関連する問題