比较表中的两行

时间:2014-12-05 11:41:06

标签: sql oracle

作为家庭作业的一部分,我需要看看表中的两个讲座是否有相同的老师。

表由

组成
lectureNr | nameOfTheLecture | hoursInWeek | professorID

我做了这件事,这很复杂,但我知道这样做只会这样做:

select distinct ( 
       case when 
       (select professorID from vorlesungen where nameOfTheLecture like 'Logik')=
       (select professorID from vorlesungen where nameOfTheLecture like 'Erkenntnistheorie') 
       then 'yes' else 'no' end) 
from vorlesungen; 

任何人都可以为我提供更好的解决方案。

由于

2 个答案:

答案 0 :(得分:2)

select count(distinct professorID) as prof_count
from vorlesungen
where nameOfTheLecture in ('Logik','Erkenntnistheorie')

如果计数更大1,则它们不是同一个。

答案 1 :(得分:1)

您可以使用ANALYTIC函数ROW_NUMBER

with data as(
select lectureNr,
       nameOfTheLecture,
       hoursInWeek,
       professorID,
       row_number() over(partition by professorID order by professorID, nameOfTheLecture) rn
from vorlesungen
where nameOfTheLecture in ('Logik','Erkenntnistheorie')
)
select * from data
where rn > 1
/