0
私は本当に私のクエリにいくつかの助けが必要です。私は2つのテーブルを一緒にマージしようとしていますが、私はデータがCast_DateでSched_Cast_Dateが同じであることを望みます。私はクエリを実行しようとするが、行21列13のキーワードが見つからないというエラーが出る。これが唯一の潜在的なエラーではないと確信している。このクエリを実行して実行するのに助けてくれる人がいますか?以下は私が実行しているクエリです。oracleをマージして一致
merge into Dante5 d5
using (SELECT
bbp.subcar treadwell, bbp.BATCH_ID batch_id,
bcs.SILICON silicon,
bcs.SULPHUR sulphur,
bcs.MANGANESE manganese,
bcs.PHOSPHORUS phosphorus,
bofcs.temperature temperature,
to_char(bbp.START_POUR, 'dd-MON-yy hh24:MI') start_pour,
to_char(bbp.END_POUR, 'dd-MON-yy hh24:MI') end_pour,
to_char(bbp.sched_cast_date, 'dd-mon-yy hh24:mi') Sched_cast_date
FROM bof_chem_sample bcs, bof_batch_pour bbp, bof_celox_sample bofcs
WHERE bcs.SAMPLE_CODE= to_char('D1')
and bofcs.sample_code=bcs.sample_code
and bofcs.batch_id=bcs.batch_id
and bcs.batch_id = bbp.batch_id
and bofcs.temperature>0
AND bbp.START_POUR>=to_DATE('01012011000000','ddMmyyyyHH24MISS')
and bbp.sched_cast_date<=sysdate)d3
ON (d3.sched_cast_date=d5.sched_cast_date)
when matched then
delete where (d5 sched_cast_date>=to_date('18012011','ddmmyyyy'))
when not matched
then
update
set d5=batch_id='99999'
2つのテーブルを結合するのはどういう意味ですか?通常、一致するものがある場合は宛先テーブルを更新し、一致しない場合は宛先テーブルに挿入します。ここでは、決して宛先テーブルに挿入しません。定義によると、一致するものがなければ、更新する宛先表に行がないため、宛先表を更新することはありません。使用しているOracleのバージョンは何ですか? OracleはオプションのDELETE句を10gに追加しました(WHEN MATCHED句とWHEN NOT MATCHED句の両方をオプションにしました)が、マッチでの削除は奇妙に見えます。 –
@Justinなぜあなたは答えではなくコメントすることを選択しましたか? –
@Conrad - 私は構文を扱うにはあまりにも先に進む前に、要件を理解しようとしています。私は現在の構文がどのように要件を迷惑にしているかを指摘しようとしていました。 –