xmgan_s 发表于 2009-05-09 21:52

Germin 发表于 2009-05-13 22:10

相当于要执行30几万条语句
为何不写一条稍复杂点的

DELETE FROM DALDGP
WHERE REPDATE != DZDATE
    AND ( CUSBRH,LCSDPT,TRXCUR,ACNACC,ACNACS) IN ( SELECT CUSBRH,LCSDPT,TRXCUR,ACNACC,ACNACS
                                                   FROM DALDGP
                                                   GROUP BY CUSBRH,LCSDPT,TRXCUR,ACNACC,ACNACS
                                                       HAVING COUNT(1)>1)

yongleig 发表于 2009-05-17 21:56

这个就是删除多余的数据。

delete from
(
select * from
(select d.*, count(*) OVER(PARTITION BY CUSBRH,LCSDPT,TRXCUR,ACNACC,ACNACS) as cnt
from DALDGP d whereREPDATE != ?) T
where cnt > 1
)
页: [1]
查看完整版本: 简单的存储过程,但执行时间n长,高手帮看看