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

查询结果:

posted @ 2023-03-10 11:13  岁月淡忘了谁  阅读(1370)  评论(0编辑  收藏  举报