J'ai une table dans laquelle la colonne Numéro de client contient des valeurs dupliquer et je souhaite sélectionner toutes les lignes dans lesquelles il existe des entrées en double pour le numéro de client, mais seulement sélectionner ces lignes où la colonne Type WO ne contient que ces valeurs spécifiques ('IMU' , 'Electric') Donc, dans l'image de la table ci-jointe à cette question: je ne devrais obtenir que des lignes pour les identifiants 1 et 2. P>
Je ne veux pas que ces doublons comptent là où la paire de lignes en double contiennent également du gaz, mais que seuls les lignes en double qui ne contiennent que exclusivement uniquement des valeurs IMU et électriques dans la colonne Type WO P>
Votre aide est très appréciée. P>
3 Réponses :
Vous pouvez utiliser Remarque: cela n'assume aucun doublure. Pour gérer cela, vous pouvez utiliser: p> groupe par code> et avoir code>: having count(distinct woType) = 2 -- number of elements in IN list
SELECT *
FROM tbl t1
WHERE EXISTS
(
SELECT * FROM tbl t2
WHERE t2.customernumber = t1.customernumber
AND t2.wotype = 'IMU'
) AND EXISTS
(
SELECT * FROM tbl t2
WHERE t2.customernumber = t1.customernumber
AND t2.wotype = 'Electric'
) AND NOT EXISTS
(
SELECT * FROM tbl t2
WHERE t2.customernumber = t1.customernumber
AND t2.wotype NOT IN ('IMU', 'Electric')
)
Here's a fiddle.
Merci beaucoup, cela fonctionne exactement comme je le voulais.
Essayez ceci: p>
Sélectionnez * à partir de table1 Main Jointure interne ( Sélectionnez Customer_Number De table1 Groupe par Customer_Number Ayant compté (Customer_Number)> 1) Sub on Main.Customer_number = Sub.customer_number Où main.wo_type dans ('imu', 'électrique') p>
Cette requête retournera l'ensemble dupliqué ou des lignes dans la table. P>
Merci cela fonctionne, mais cela compte également ces lignes là où il y a un 3ème wotype que je ne veux pas. Mais merci pour l'aide si