SQL – Comment vérifier plusieurs valeurs d'une colonne en ne returnnant qu'une seule ligne?

Désolé si la question était libellée bizarre.

J'écris un rapport et j'ai une table qui a des champs comme celui-ci ….

applicationID statusid statuscreationdate 123 1 3-18-2013 123 2 3-27-2013 124 1 3-29-2013 125 1 4-1-2013 125 2 4-3-2013 

Et je veux seulement returnner des rangées avec un statusid de 1 MAIS je veux aussi vérifier si un statusid de 2 existe pour chaque applicationid. Ainsi, la requête souhaitée sur le tableau ci-dessus produirait:

  123 3-18-2013 125 4-1-2013 

Toute aide serait appréciée. Si plus d'informations sont nécessaires, faites le moi savoir. Je voulais garder cela aussi court et simple que possible tout en incluant la quantité d'informations nécessaire.

Merci pour votre time.

Edit: corrigé la partie des résultats souhaités

essayer

  Select * From TableName t Where statusID = 1 And Exists(Select * From tablename Where applicationID = t.applicationID And statusID = 2) 

Ce problème est appelé Relational Division

 SELECT applicationID, MAX(statuscreationdate) date FROM TableName WHERE statusID IN (1, 2) -- list of statusID GROUP BY applicationID HAVING COUNT(DISTINCT statusID) = 2 -- no of statusID 
  • SQLFiddle Demo
  • SQL de la Division Relationnelle