我正在运行查询以保留基于移动设备的最后提交的记录。我已经确定了这个过程,正如您在下面的查询示例中看到的那样。
WITH cte AS (
SELECT
mobile,
submission_date,
source,
ROW_NUMBER() OVER (
PARTITION BY mobile
ORDER BY mobile, submission_date DESC
) row_num
FROM
table
)
DELETE FROM cte
WHERE row_num > 1
我想调整这个查询来满足这个新需求。这是一些示例数据。
id | 移动 | 提交日期 | 来源 |
---|---|---|---|
1 | 0400000000 | 06-06-2020 | AAAA |
2 | 0400000000 | 05-05-2020 | BBBB |
3 | 0411111111 | 09-09-2020 | BBBB |
4 | 0411111111 | 08-08-2020 | BBBB |
5 | 0422222222 | 08-08-2020 | AAAA |
如果源 = AAAA,我希望只能删除第 1 行,除非第 2 行不存在。
我也希望能够说一些类似的内容
DELETE FROM cte
WHERE row_num = 1 AND source in ('AAAA')
UNLESS row 2 does not exist
这将允许我保留记录 5,即使它是第 1 行且来源为 AAAA,因为没有第二条记录具有相同的手机号码。换句话说,记录 1 将是使用示例数据删除的唯一记录。