STATUS = 'OK' AND DATE >= '2012' であるテーブル LDS からすべての個別の値をカウントする作業クエリがあります。また、同一の ID が複数ある場合は、この ID のステータスが「ok」の場合、日付が最も新しいものをカウントします。 ":
COUNT(DISTINCT lds1.ID) から LDS lds1 左結合 LDS lds2 ON lds1.ID = lds2.ID AND lds1.Date < lds2.Date AND lds1.Status = 'ok' どこ lds1.Date >= '2012' AND lds1.Status = 'ok' かつ lds2.ID が NUL である
上記のクエリを実行する前に、TRUE になる別の条件を追加する必要があります。「STATUS=NULL AND DATE>= 2011 の ID のみを考慮する」。STATUS = NULL の初期 ID インスタンスは結果にカウントされません。ID を考慮する必要があるかどうかを判断するだけです。
テーブル LDS: ID | ステータス | 日にち 1 | ヌル | 2011年 1 | わかりました | 2012年 2 | 悪い | 2012年 1 | 悪い | 2013年 3 | ヌル | 1999年 3 | わかりました | 2012年 4 | わかりました | 2012年 5 | ヌル | 2011年 5 | わかりました | 2012年 6 | ヌル | 2012年
完全なクエリの期待される結果は ID "5" です。
更新:
多分これは配列で解決できますか?
1. STATUS=NULL AND DATE>=2011 であるテーブル LDS からすべての ID を取得し、配列に入れます (結果: ID1、ID5、ID6)
2. 配列内の各 ID について、テーブル内のすべてのインスタンスをチェックし、次のものを選択します最大の日付 AND STATUS IS NOT NULL (結果: ID1、ID5)
3. STATUS=OK の数を数えます (結果: ID5)