已根据数据中的唯一ID识别出特定行。我想将这些行更新为一列。尝试使用更新命令,但它无法正常工作
UPDATE L03_A_AVOX_DATA
SET PWC_Exclusion_Flag =
(CASE
WHEN (L03_A_AVOX_DATA.PWC_SEQ_AVOX IN
(SELECT PWC_SEQ_AVOX
FROM L03_A_AVOX_DATA
WHERE client_id IN
(SELECT DISTINCT client_id
FROM ( SELECT DISTINCT
client_id,
extract_type,
COUNT (*)
FROM temp
GROUP BY client_id,
extract_type
HAVING COUNT (*) = 1))
AND extract_type = '0'))
THEN
1
ELSE
L03_A_AVOX_DATA.PWC_Exclusion_Flag
END )
任何人都可以帮助我
答案 0 :(得分:1)
您应该通过尝试使用JOIN模拟UPDATE来简化此语句。
有关详细信息,请参阅此处:
Update statement with inner join on Oracle
这个想法也适合你的情况。
那么那些在temp
表格中有对应物的记录就会更新它们
那些没有对应物的人 - 似乎你不想再更新它们。
答案 1 :(得分:0)
如果client_id在临时表中只有1条extract_type 0记录,您是否正在尝试将PWC_Exclusion_Flag更新为1,我是对的吗?
试试这个:
update L03_A_AVOX_DATA
set PWC_Exclusion_Flag = 1
where client_id in (
select client_id
from temp
where extract_type = '0'
group by client_id
having count(1) = 1
);
这也使L03_A_AVOX_DATA中的其他记录保持不变。