2011-03-02 4 views
0

J'ai une table qui a les colonnes ci-dessous.Groupe SQL par question

J'ai besoin de trouver les personnes qui ont plus de 2 ApplicantRowid avec la même jobcategoryrowid et AssessmentTest devrait avoir au moins une ligne NULL avec Different Appstatusrowid.

Le résultat devrait ressembler exactement à celui du tableau ci-dessous.

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

Je suggère réécrivant cette question d'une manière qui aide-nous à y répondre. À quoi ressemblent les tables sources? À quoi ressemblent les données? Quels sont les types de colonnes? – jonnii

+1

.. et qu'avez-vous déjà essayé? – GolezTrol

+0

Quel est l'exemple de données d'entrée pour la sortie demandée? –

Répondre

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 ne comprend pas les valeurs NULL, donc count(AssessmentTestRowid) < count(*) assure qu'il ya au moins un NULL

count(distinct AppstatusRowid) > 1 assurent qu'il existe différentes AppstatusRowids