0

RepId と日付のテーブルがあります。

Table: 1
RepID   logTime
108981  2013-04-09 00:00:00.000
108981  2013-04-09 00:00:00.000
108981  2013-04-11 00:00:00.000
108981  2013-04-11 00:00:00.000
108981  2013-04-11 00:00:00.000
108982  2013-04-09 00:00:00.000
108982  2013-04-10 00:00:00.000
108982  2013-04-11 00:00:00.000
108982  2013-04-11 00:00:00.000
108982  2013-04-11 00:00:00.000

where condition で指定された日付範囲内の少なくとも 1 つの日付が一致しなかった場合、表 1 の RepId を後悔します。

私は次のようなクエリを書きました

select tl.repID from table1 tl where 
     CONVERT(date, logTime) > CONVERT(date,'2013-04-08 00:00:00.000') and CONVERT(date, logTime) < CONVERT(date,'2013-04-12 00:00:00.000')

ここで出力は次のようになります

RepID
108981
108982

しかし、私はそれが好きです

RepID
108982

repId - 108981 には、where 条件で指定された日付「2013-04-10 00:00:00.000」がありません。

--or----- RepID の取り方と納得いかない日付.....

この問題を克服するために助けてください......

4

3 に答える 3

2

このようにしてみてください...

SELECT RepID FROM (Select RepID ,(Select Count(Distinct Cast(logTime as Date)) FROM T as A 
   WHERE 
   Cast( a.logTime as date) > Cast('2013-04-08 00:00:00.000' as date) 
   and Cast( a.logTime as date) < Cast('2013-04-12 00:00:00.000' as Date)
    AND
  A.RepID=b.RepID) AS COUNTS
   FROM T as B) as  c 
    WHERE COUNTS=datediff('2013-04-12 00:00:00.000','2013-04-08 00:00:00.000')-1 
    group by RepID

SQL フィドルのデモ

于 2013-05-09T12:23:58.617 に答える
0

前置詞のロジックを簡単に変更できます。日付が範囲内のレジスターを「後悔」する代わりに、日付が範囲外のレジスターを探します。

于 2013-05-09T12:27:24.960 に答える