oracle SQL场景,请帮我查询[复制]

fhity93d  于 2023-10-16  发布在  Oracle
关注(0)|答案(2)|浏览(137)

此问题已在此处有答案

Oracle find rows with multiple values in a column in a group(2个答案)
上个月关门了。
Doctor
| 医生姓名|医院名称|部|
| --|--|--|
| Rajib|一|眼睛|
| Raj| null| null|
| Sumit| B|大脑|
| Saurabh|一|鼻子|
| Deepak| C|眼睛|
我需要一个查询返回那些医生的名字是在同一家医院,但在不同的部门。
我是SQL新手,所以不知道如何处理。

rvpgvaaj

rvpgvaaj1#

在我看来,自我加入会有所帮助。
样本数据:

SQL> with doctor (name, hospital, dept) as
  2    (select 'Rajib'  , 'A' , 'EYE'   from dual union all
  3     select 'Raj'    , null, null    from dual union all
  4     select 'Sumit'  , 'B' , 'BRAIN' from dual union all
  5     select 'Saurabh', 'A' , 'NOSE'  from dual union all
  6     select 'Deepak' , 'C' , 'EYE'   from dual
  7    )

查询方式:

8  select a.name
  9  from doctor a join doctor b on a.hospital = b.hospital
 10                             and a.dept <> b.dept
 11                             and a.name <> b.name;

NAME
-------
Saurabh
Rajib

SQL>
pxy2qtax

pxy2qtax2#

select 
  doctor,
  hospital,
  count(distinct dept) 
from ...
group by doctor,
  hospital

将给予每个医生/医院组合的不同科室的数量。
从那里,您可以使用内联视图或HAVING子句来任意限制结果

相关问题