3

对不起,如果这个问题措辞很奇怪。

我正在写一份报告,我有一个包含这样字段的表格......

      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

任何帮助,将不胜感激。如果需要更多信息,请告诉我。我希望在包含必要数量的信息的同时尽可能简短和简单。

谢谢你的时间。

编辑:更正了所需的结果部分

4

2 回答 2

7

这个问题叫做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 
于 2013-04-09T03:15:57.957 回答
4

尝试

 Select * From TableName t
 Where statusID = 1
    And Exists(Select * From tablename
               Where applicationID = t.applicationID 
                  And statusID = 2)
于 2013-04-09T03:19:25.383 回答