我在存储过程中创建了一个简单的临时表,由一个ID字段(不是主键)和一个与之关联的日期组成。我想要做的是只保留每个ID
具有最新日期的ID /日期记录我写了以下内容,但似乎没有做我想要的事情
DELETE #summary
FROM #summary s1, #summary s2
WHERE s1.evt_dte != (
SELECT MAX(s1.evt_dte)
FROM #summary s1, #summary s2
WHERE s1.evt_or_cat_num = s2.evt_or_cat_num)
AND s1.evt_or_cat_num = s2.evt_or_cat_num
我尝试做的是将表与自身进行比较,并删除存储的每个evt_or_cat_num的evt_dte小于MAX的所有记录。
任何想法如何调整才能正常工作?
答案 0 :(得分:1)
您可以加入要保留的数据,并删除无法建立链接的所有内容
DELETE s1
FROM #summary s1
left JOIN
(
select evt_or_cat_num, MAX(evt_dte) maxdt
from #summary
group evt_or_cat_num
) s2 on s1.evt_or_cat_num = s2.evt_or_cat_num
and s1.evt_dte = s2.maxdt
where s2.evt_or_cat_num is null