我有以下查詢,它根據查詢中提到的條件更新rec_tmprecord表的coulmn「tmp_activation_date」和最大的actdate。在Oracle查詢中加入條件
MERGE INTO rec_tmprecord
USING (SELECT rec.ID, MAX (act.actdate) AS tmpactivation_date
FROM rec_tmprecord rec INNER JOIN tmp_asset asset
ON asset.serial = rec.serialtemp
and upper (replace (asset.prodname, 'Ajink ')) = upper (replace (rec.prodnametemp, 'Ajink '))
and NVL(asset.release,'NF') = NVL(rec.tmprelease ,'NF')
and rec.serialtemp != 'aaa-aaaaaaaa'
LEFT JOIN tmp_acti_hist act
ON asset.tmp_id = act.tmp_row_id
WHERE rec.cust_id = 234567
GROUP BY rec.cust_id,asset.serial,rec.ID) new_values
ON (rec_tmprecord.ID = new_values.ID)
WHEN MATCHED THEN
UPDATE
SET tmp_activation_date = new_values.tmpactivation_date
;
但是,當我分析表「rec_tmprecord」的數據,我發現,有存在於「rec_tmprecord」 table.But,列「PRODNAME」的「prodnametemp」列中的某些空值或空值表「tmp_asset」不包含任何空值或空值。 (替換(asset.prodname,'Ajink'))= upper(replace(rec.prodnametemp,'Ajink'))「條件並且因此rec_tmprecord表的結果」tmp_activation_date「將會失敗用空值或空白值更新。
我的要求是,如果「prodnametemp」具有空值並且「prodname」包含某個值,那麼「tmpactivation_date」將根據查詢中提到的其他條件進行計算。 Anyhelp對此將不勝感激。
'tmp_activation_date'在該場景下不會更新爲'null';你不會在'using'部分有一行 - 連接條件失敗,所以沒有任何東西可以匹配? –