我有一个表格数据
对于相同的ER和月份,如果场景budget_N或act_N没有数据,那么最终表中不会插入:
我认为这是一个很好的起点
select *
FROM your_table
WHERE (ER, MONTH) IN (
SELECT ER, MONTH
FROM your_table
GROUP BY ER, MONTH
HAVING COUNT(CASE WHEN SCENARIO_CD = 'BUDGET_N' THEN 1 END) = 0
OR COUNT(CASE WHEN SCENARIO_CD = 'ACT_N' THEN 1 END) = 0
);
在 SQL Server 中可以通过连接两个表来删除。
假设我们只有两个 Scenario_cd,
BUDGET_N
和 ACT_N
DELETE a
FROM you_table as a
LEFT JOIN you_table as b
ON a.ER=b.ER
AND a.MONTH = b.MONTH
AND b.SCENARIO_CD = (
CASE
WHEN a.SCENARIO_CD = 'BUDGET_N' THEN 'ACT_N'
WHEN a.SCENARIO_CD = 'ACT_N' THEN 'BUDGET_N'
END
)
WHERE b.SCENARIO_CD is null