根据字段值删除 Hana Table 上的值

Deleting values on Hana Table based on a field value

我正在处理 hana table,如果 table 包含列表中的值,我将尝试删除它。

A  B   
22 01 
22 01
22 02
22 06
23 01
23 01
23 06

我想从这个 table 中删除一些值并得到这个。

A  B   
22 01 
22 01
22 06
23 01
23 01
23 06

基本上我很可能会进行计数并检查 B 列是否由 01 和 02 组成,是否确实删除 02 以及是否仅由 01 组成。

对于我尝试过的几乎每个 sql 脚本来说,这似乎几乎是不可能的

SELECT BP, COUNT(*) AS SO FROM "EH"."BP_CUST" GROUP BY BP;

此脚本获取每一行的计数并将其放入 SO 列。

之后可能会在 SO 列上做一个 if 语句,如果 B 字段包含 01 和 02 则删除?

我尝试做 IF 语句然后 select 但我也无法让它工作。

A  B
22 01 
22 01 
22 02 
22 06 
23 01 
23 01 
23 06 
24 02

Becomes 

A  B
22 01 
22 01 
22 06 
23 01 
23 01 
23 06 
24 02

如果我没理解错的话,你想要:

select c.*
from "EH"."BP_CUST" c
where c.b <> '02' or
      not exists (select 1
                  from "EH"."BP_CUST" c2 
                  where c2.a = c.a and c2.b = '01'
                 );

您的问题是"delete"。但我认为只有当没有相同 a(和所有其他行)的“01”行时,select“02”行才是目的。

如果我理解正确,这可能是解决方案:

DELETE BP_CUST 
    WHERE A IN 
    (
        SELECT
            BP_CUST.A
        FROM
        (   
            SELECT
                A
                , COUNT(CASE WHEN B != '02' THEN 1 ELSE NULL END) AS NOT_02 
                , COUNT(CASE WHEN B = '02' THEN 1 ELSE NULL END) AS IS_02
            FROM BP_CUST
            GROUP BY A
        ) AS t_delete
        JOIN BP_CUST ON BP_CUST.A = t_delete.A
        WHERE B = '02' AND NOT_02 > 0 AND IS_02 > 0
    )
    AND B = '02'