现在oracle数据量大概几十万行,有很多id号,有的id对应的type值为‘银行承兑’,有的type对应值为‘应付账款’,现在的需求就是找出type字段值既有'银行承兑'也有'应付账款'的所有id,也就是过滤掉所有只有银行承兑或者只有应付账款的id,如图标黄的id编号为10005,10006,10007,10008就是需要查询出来的数据,其他的就是需要过滤掉的数据,请问下,这种SQL在oracle上该怎么写?
对id,type进行分组,然后再统计count(id)=2的结果。
该问题可以通过count(distinct type) 进行解决,具体的写法如下:
create table bank_test(
id varchar(10),
type varchar(50)
); -- 声明表结构,用于理解sql
select id ,count(distinct type) from bank_test group by id having count(distinct type) > 1;