按 Key 列分组并获取具有一个有效值和零值的记录
Group by on Key columns and get the records having one valid value and zero value
我们有一个场景,根据关键列分组,我必须只获得具有 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 ,Naren ,2020-01-20,123456,M ,6789
当我尝试使用以下查询时(关键列:TransId、CustomerNm、Date、Number、Gender)
select TransId,CustomerNm,Date,Number,Gender from INS.Transaction
group by TransId,CustomerNm,Date,Number,Gender having count(*) > 1
i will get both the records
1 ,Surya ,2020-01-01,123456,M
2 ,Naren ,2020-01-20,123456,M
但我正在尝试获取 ID =0 的记录。期望输出为
1 ,Surya ,2020-01-01,123456,M
请建议我是否可以在上述查询中添加任何更改
在 select 查询中添加 MIN(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 子句中添加另一个 AND
来检查是否 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
我们有一个场景,根据关键列分组,我必须只获得具有 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 ,Naren ,2020-01-20,123456,M ,6789
当我尝试使用以下查询时(关键列:TransId、CustomerNm、Date、Number、Gender)
select TransId,CustomerNm,Date,Number,Gender from INS.Transaction
group by TransId,CustomerNm,Date,Number,Gender having count(*) > 1
i will get both the records
1 ,Surya ,2020-01-01,123456,M
2 ,Naren ,2020-01-20,123456,M
但我正在尝试获取 ID =0 的记录。期望输出为
1 ,Surya ,2020-01-01,123456,M
请建议我是否可以在上述查询中添加任何更改
在 select 查询中添加 MIN(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 子句中添加另一个 AND
来检查是否 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