Sql 基于字段值删除Hana表上的值

Sql 基于字段值删除Hana表上的值,sql,database,procedure,hana,Sql,Database,Procedure,Hana,我正在处理hana表,如果该表包含列表中的值,我将尝试删除该表 A B 22 01 22 01 22 02 22 06 23 01 23 01 23 06 我想从这个表中删除一些值,并得到它 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

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

A  B   
22 01 
22 01
22 02
22 06
23 01
23 01
23 06
我想从这个表中删除一些值,并得到它

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语句,然后选择,但我也无法让它工作

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'
                 );

你的问题是删除。但我认为这样做的目的是仅当同一行和所有其他行没有01行时才选择02行。

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

删除BP_客户 A在哪里 选择 英国石油公司客户A 从…起 选择 A. ,当B!='02'然后是1,否则为空,结束为非\u 02 ,COUNTCASE,当B='02'时,则1 ELSE NULL结束,因为它是\u 02 来自英国石油公司客户 分组 如图所示,删除 在BP_CUST.A=t_delete.A上加入BP_CUST 式中,B='02'而非_02>0,且为_02>0 和B='02'
如果您的数据如下所示:22 01 22 01 22 02 22 06 23 01 23 01 23 06 24 02您想要的输出是什么?@LonelyPlaneteer我更新了问题Yes我想在不是01时选择02行,如果有01和02,则选择01行,但这会同时选择01和02。感谢您的帮助,因为当存在“01”行时,这不应该选择“02”行,这两个条件都不满足。因此,如果存在22 01 22 01 22 02 22 06 23 02 23 06,我如何选择22 01 22 01 22 06 23 02 23 06请记住,我想离开23 02和23 06我尝试使用此代码,但它不起作用。我不认为我能在hana做像BP_CUST.A这样的事情。谢谢你,tho