2010-06-23 7 views
2
select cnt.loginid, grp.last_name as 'Group Name' 
from contact cnt 
    right join grpmem list on cnt.contact_uuid = list.member 
    left join contact grp on grp.contact_uuid = list.group_id 
    join contact_acctyp cntacc on cnt.contact_uuid = cntacc.contact_uuid 
where cntacc.c_acctyp_id in (select id from acctyp_v2 where sym like 'CDN%') 

J'ai écrit une requête pour notre système qui tire une liste de tous les contacts canadiens et le groupe auquel ils appartiennent.requête Nombre de résultat sur les états multi-affilient

Maintenant, pour les personnes qui sont dans plusieurs groupes (leur identifiant de connexion apparaît plusieurs fois) J'ai besoin de déterminer le nombre de groupes dans lesquels ils se trouvent (retourner un nombre). Cependant, je ne suis pas sûr de la façon d'effectuer le compte.

Je voudrais ma sortie dans le format suivant:

| USER ID | # of Groups | 

Je ne peux pas sembler comprendre comment transformer ce que j'ai écrit dans cela.

Répondre

2

En supposant que tout ce que vous voulez faire est de regrouper les informations que vous êtes déjà en train de revenir, et sans regarder en détail à votre requête, voici une supposition:

select 
    cnt.loginid, 
    COUNT(*) 
from contact cnt 
    right join grpmem list on cnt.contact_uuid = list.member 
    left join contact grp on grp.contact_uuid = list.group_id 
    join contact_acctyp cntacc on cnt.contact_uuid = cntacc.contact_uuid 
where cntacc.c_acctyp_id in (select id from acctyp_v2 where sym like 'CDN%') 
GROUP BY 
    cnt.loginid 
+0

Jusqu'à présent, si bon. Maintenant, j'ai juste besoin d'un moyen de lister où compte (*)> 1 – RavB

+1

simplement ajouter: COMPTE (*)> 1 – Yellowfog

Questions connexes