0
votes

Sélectionner des enregistrements dans un groupe

Je ne sais pas comment encadrer cette question, alors demandez un exemple.

Dans la table ci-dessous, je souhaite trouver tous ces enregistrements qui ne sont pas définis avec type "A". Donc, de cette table, je veux découvrir l'enregistrement avec ID comme 2. P>

Tablea P>

+-----+
| ID2 |
+-----+
|   1 |
|   2 |
|   3 |
+-----+


0 commentaires

3 Réponses :


0
votes

Une méthode consiste à utiliser un avec la clause avec un compte conditionnel : xxx


0 commentaires

0
votes

Vous pouvez utiliser un CTE pour sélectionner tous les identifiants associés à la valeur que vous souhaitez exclure.

Vous pouvez ensuite utiliser une sous-requête pour filtrer ces identifiants: P>

declare @TableA table (ID1 int, Type char(1))
insert into @TableA 
values
     (1, 'A')
    ,(1, 'B')
    ,(1, 'C')
    ,(2, 'B')
    ,(2, 'C')
    ,(3, 'A')
    ,(3, 'B')
    ,(3, 'C')

;with filteredIds 
as
(
    select
    distinct ID1 
    from @TableA
    where Type ='A'
)
select 
    *
from @TableA 
where
    ID1 not in (select id1 from filteredIds)


0 commentaires

0
votes

Vous pouvez utiliser n'existe pas : xxx

avec un index sur tabla (id1, type) , c'est probablement le plus rapide méthode dans la plupart des cas.

Notez que cela trouve également des identifiants qui ne sont pas dans Tablea du tout.


0 commentaires