我正在尝试在 SQL Server 中工作,只是它更容易在 Excel 中显示它。
我有两列:卡号和评论。 如果一个卡号在我的数据库中存在两次,并且它有一行带有“已纠正”注释,并且也存在带有“已关闭”注释的行,那么我需要删除带有“已纠正”注释的行。 我不知道如何管理它,我尝试使用存在,但它不起作用。 谢谢大家。
我试过了
SELECT
*
FROM TABLE1
WHERE EXISTS(SELECT CARDNUMBER, COMMENT FROM TABLE1 WHERE COMMENT IN ('CORRECTED', 'CLOSED')
但是不起作用。
这是一种使用可删除 CTE 的方法:
WITH cte AS (
SELECT *, COUNT(CASE WHEN comment = 'closed' THEN 1 END)
OVER (PARTITION BY cardnumber) AS closed_cnt
FROM Table1
)
DELETE
FROM cte
WHERE comment = 'corrected' AND closed_cnt > 0;