如果这个问题措辞怪异,我很抱歉。
我正在写一份报告,我有一张包含这样字段的表格....
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
我只想返回statusid为1的行但是我还想检查每个applicationid是否存在statusid 2。因此,上表中的所需查询将产生:
123 3-18-2013
125 4-1-2013
任何帮助将不胜感激。如果需要更多信息,请告诉我。我希望尽可能简短,简洁,同时包含必要的信息量。
感谢您的时间。
编辑:更正了所需的结果部分
答案 0 :(得分:5)
此问题称为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
答案 1 :(得分:3)
试
Select * From TableName t
Where statusID = 1
And Exists(Select * From tablename
Where applicationID = t.applicationID
And statusID = 2)