Oracle 按键列分组,并获取具有一个有效值和零值的记录
我们有一个场景,根据GROUPBY键列,我必须只获取组合为0的记录&列“ID”的任何有效数字 用下面的例子Oracle 按键列分组,并获取具有一个有效值和零值的记录,oracle,db2,Oracle,Db2,我们有一个场景,根据GROUPBY键列,我必须只获取组合为0的记录&列“ID”的任何有效数字 用下面的例子 TransId,CustomerNm,Date ,Number,Gender,ID 1 ,Surya ,2020-01-01,123456,M ,1234 1 ,Surya ,2020-01-01,123456,M ,0 2 ,Naren ,2020-01-20,123456,M ,3456 2
TransId,CustomerNm,Date ,Number,Gender,ID
1 ,Surya ,2020-01-01,123456,M ,1234
1 ,Surya ,2020-01-01,123456,M ,0
2 ,Naren ,2020-01-20,123456,M ,3456
2 ,Naren ,2020-01-20,123456,M ,6789
当我尝试以下查询时(关键列:TransId、CustomerNm、Date、Number、Gender)
但我正在尝试获取ID为0的记录。期望输出为
1 ,Surya ,2020-01-01,123456,M
请建议我在选择查询中通过添加最小值(ID)进行分组,然后获取ID 0时,是否可以在上述查询中添加任何更改
select * from (
select TransId,CustomerNm,Date,Number,Gender,MIN(ID) ID from INS.Transaction
group by TransId,CustomerNm,Date,Number,Gender having count(*) > 1 ) where ID = 0
只需在having子句中添加另一个
和
,以检查min(id)=0
。我已经重命名了一些列
select transid,customernm,transaction_date,some_number,gender
from transaction
group by transid,customernm,transaction_date,some_number,gender
having count(*) > 1 and min(id) = 0;
注意:-不要使用保留字作为列名,如
date
和number
您想要Surya
的记录,其中id=0???@RobertoHernandez。。谢谢你的回复。是的,根据超过count(*)>1的关键列,在这些记录中,如果我们的最小值为0,我将尝试获取它
select transid,customernm,transaction_date,some_number,gender
from transaction
group by transid,customernm,transaction_date,some_number,gender
having count(*) > 1 and min(id) = 0;