您好我有一张包含以下记录的表
SEQ_VAL, ACC, TERR, SEG2, ORG_ID
273480 673015 59027 CA 521
273481 673015 44027 US 521
287582 323181 44027 US 521
351420 323181 59027 CA 521
287589 3228 44027 US 521
287977 3229 44027 CA 521
90990 6768 586709 US 521
90966 6768 586709 US 521
我需要以下输出。我基本上需要删除每个acc和org_id的重复记录。对于每个acc和org_if,如果存在seg2 val CA和US的多个记录,我只需要保留US。如果每个CA和US都有一条记录,我也需要保留它们。
SEQ_VAL, ACC, TERR, SEG2, ORG_ID
273481 673015 44027 US 521
287582 323181 44027 US 521
287589 3228 44027 US 521
287977 3229 44027 CA 521
90990 6768 586709 US 521
我正在使用下面的delete语句,并抛出以下错误。
SQL错误:ORA-01732:此视图上的数据操作操作不合法
Delete from (
SELECT abc.*,
ROW_NUMBER ()
OVER (PARTITION BY ACC, ORG_ID
ORDER BY SEG2 DESC)
seq_no
FROM abc
) a
where a.seq_no = 2
答案 0 :(得分:0)
根据您的数据,此查询正常
Delete
from
Table
WHERE RN
IN (
Select RN from (
Select SEQ_VAL, ACC, TERR, SEG2, ORG_ID ,
Row_number()OVER(PARTITION BY ACC ORDER BY terr) RN from @Table1)T WHERE RN = 1
ORDER BY ACC DESC )