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 に答える