0
votes

Comment sélectionner la valeur correspondant à toutes les valeurs dans une liste?

J'essaie d'obtenir deux valeurs de ligne distinctes, pour 2 conditions de la même colonne.

Par exemple, avec ces données: xxx

Je veux sélectionner tout Les lignes où l'état = 0 et = 2 .

Donc, par exemple, la sortie doit être: xxx

merci!


2 commentaires

Vous ne pouvez pas simplement utiliser où l'état dans (0, 2) ?


Il n'y a pas de ligne avec id = 0 dans votre exemple


3 Réponses :


2
votes

Une méthode est la suivante: xxx

mais je soupçonne que vous voulez les deux valeurs pour le ID . Dans ce cas, une méthode utilise Exist : xxx

si vous voulez juste que le ID S, puis l'agrégation est facile : xxx

Ceci peut être incorporé dans une requête pour obtenir les lignes d'origine à l'aide de dans , existe ou rejoindre . Ou Fonctions de fenêtre: xxx


0 commentaires

1
votes

à l'aide de ayant compter (statut distinct) = 2 code>, vous pouvez filtrer et obtenir le ID code> et en fonction du ID code> s Requête avec où code> clause Vous pouvez obtenir la sortie attendue:

SELECT * 
FROM TableName 
WHERE ID IN (
    SELECT id
    FROM TableName
    WHERE status IN (0, 2)  
    GROUP BY id
    HAVING COUNT(DISTINCT status) = 2 
) AND status IN (0, 2) 


0 commentaires

0
votes

Pour obtenir les identifiants que vous souhaitez que vous devez grouper par ID et compter les valeurs distinctes de l'état:

select * from tablename
where 
  status in (0, 2)
  and
  id in (
    select id from tablename
    where status in (0, 2)
    group by id
    having count(distinct status) = 2
  )


0 commentaires