同じ を持つ複数の行を持つデータのセットがありますunique_string_identifier
。シーケンスから行の最初のインスタンスに新しい一意の ID を割り当て、unique_string_identifier
それを使用して、同じunique_string_identifier
ID を -1 倍した後続の行を指定します。私はそれを3つの異なる方法で試しましたが、私はいつも得ます
ORA-30483: ここではウィンドウ関数は使用できません
これが私の試みです:
UPDATE my_table
set my_id =
CASE WHEN LAG(unique_string_identifier, 1, '-') OVER (order by unique_string_identifier) <> unique_string_identifier THEN my_id_seq.nextval
ELSE LAG(-1 * my_id, 1, '-') OVER (order by unique_string_identifier) END CASE
where import_run_id = a_run_id;
私もこれを試しました:
UPDATE my_table
set my_id = my_id_seq.nextval
where row_number() over (partition by unique_string_identifier order by line_id) = 1;
//another update statement to make the rows with null ID's equal to the negative id joined on unique_string_identifier
この:
UPDATE my_Table
set my_id =
decode(unique_string_identifier, LAG(unique_string_identifier, 1, '-') OVER (order by unique_string_identifier), LAG( my_id, 1, '-') OVER (order by unique_string_identifier), my_id_seq.nextval)
where import_run_id = a_run_id;
どうすればこれを機能させることができますか?
編集:また、私自身の充実のために、これら3つのステートメント(私にはかなり異なっているように見える)がまったく同じORAエラーになる理由を誰かが説明できれば、感謝します。