删除没有预算的行并采取行动

问题描述 投票:0回答:1

我有一个表格数据

enter image description here

对于相同的ER和月份,如果场景budget_N或act_N没有数据,那么最终表中不会插入:

enter image description here

我认为这是一个很好的起点

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 sql-server sql-server-2016
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.