Oracle 查询一个字段相同,另一个字段不同
SELECT DISTINCT a.字段1, a.字段2 FROM table a JOIN table b ON a.字段2 != b.字段2 WHERE a.字段1= b.字段1 ORDER BY a.字段1, a.字段2
以下两种查询效果相同(查出同一张表中不同案件,但是有同一录入人、同一录入单位,同一案发时间的数据):
第一种SQL:
SELECT DISTINCT a.case_id, a.case_no, a.case_name FROM liangfa_case_basic a JOIN liangfa_case_basic b ON a.case_id != b.case_id WHERE to_char(a.input_time,'yyyy-MM-dd')= to_char(b.input_time,'yyyy-MM-dd') and a.input_org= b.input_org and to_char(a.anfa_time,'yyyy-MM-dd')= to_char(b.anfa_time,'yyyy-MM-dd');
查询结果:
第二种SQL:
select * from ( select lcb.case_id,lcb.case_no,lcb.case_name,count(*) over(partition by to_char(lcb.input_time,'yyyy-MM-dd'),lcb.input_org,to_char(lcb.anfa_time,'yyyy-MM-dd')) as num from liangfa_case_basic lcb )t where t.num > 1
查询结果: