J'essaie d'obtenir deux valeurs de ligne distinctes, pour 2 conditions de la même colonne.
Par exemple, avec ces données: p> Je veux sélectionner tout Les lignes où l'état Donc, par exemple, la sortie doit être: p> merci! p> p> = 0 code> et = 2 code>. p>
3 Réponses :
Une méthode est la suivante: mais je soupçonne que vous voulez les deux em> valeurs pour le si vous voulez juste que le Ceci peut être incorporé dans une requête pour obtenir les lignes d'origine à l'aide de ID code>. Dans ce cas, une méthode utilise Exist code>: p> ID code> S, puis l'agrégation est facile : p> dans code>, existe code> ou rejoindre code>. Ou Fonctions de fenêtre: p>
à 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)
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
)
Vous ne pouvez pas simplement utiliser
où l'état dans (0, 2) code>?Il n'y a pas de ligne avec
id = 0 code> dans votre exemple