我有一张桌子,我正在获取某些ID的重复记录。我需要删除基于ID的重复记录,并且具有条件,例如该ID的所有列均为空。如果这些列具有一定的价值,我需要保留该记录。但是某些ID的所有列均为空,但不重复。我需要保留这些记录。
我的输入表如下:
输出结果应如下所示:
答案 0 :(得分:0)
首先,使用您提供的测试数据创建一个表:
CREATE TABLE SGR (ID INT, item_no INT, fee NUMERIC(10,2))
INSERT INTO SGR VALUES
(895, 110, 179.5),
(895, NULL, NULL),
(741, NULL, NULL),
(2021, NULL, NULL),
(2021, 116, 89.6),
(768, NULL, NULL)
从表中删除item_no和Fee均为空的任何记录,并且表中还有另一行具有相同ID的字段,其中任一字段都不为空:
DELETE FROM SGR
WHERE item_no IS NULL AND fee IS NULL
AND EXISTS (SELECT * FROM SGR s WHERE id = sgr.ID AND (item_no IS NOT NULL OR fee IS NOT NULL))
然后在查询表时:
SELECT * FROM SGR
您得到了:
ID item_no fee
895 110 179.50
741 NULL NULL
2021 116 89.60
768 NULL NULL
答案 1 :(得分:0)
使递归CTE具有order by和数字参考值。然后从CTE中删除记录。重复的行将从物理表中删除。