SQL Group By Question

时间:2011-03-02 21:09:28

标签: sql

我有一个包含以下列的表格。

我需要找出那些拥有2个以上具有相同jobcategoryrowid的ApplicantRowid的人,而AssessmentTest应该至少有一行NULL与不同的Appstatusrowid。

结果应该与下表完全相同。

Rowid    ApplicantRowid    JobCategoryRowid AssessmentTestRowid AppstatusRowid
10770598    6952346        157                3                     5
11619676    6952346        157               NULL               6

1 个答案:

答案 0 :(得分:0)

select t.*
from
(
    select ApplicantRowid, JobCategoryRowid
    from tbl
    group by ApplicantRowid, JobCategoryRowid
    having count(AssessmentTestRowid) < count(*)
       and count(distinct AppstatusRowid) > 1
) x
inner join t on t.ApplicantRowid = x.ApplicantRowid
            and t.JobCategoryRowid = x.JobCategoryRowid

COUNT不包含NULL,因此count(AssessmentTestRowid) < count(*)确保至少有一个NULL

count(distinct AppstatusRowid) > 1确保有不同的AppstatusRowids