2013-08-19 95 views
2

行我有一個這樣的表:選擇基於特定條件

CustID  VisitTime 
1   2012-12-31 11:59 
1   2013-1-1 00:00 
1   2013-1-1 00:05 
2   2013-1-1 00:20 
2   2013-1-1 10:00 
3   2013-1-1 11:40 

現在,我要選擇那些新的客戶,其訪問該網站從Jan 1st 12:00AMJan 31st 11:59pm

例如:cust ID 1也訪問Dec,因此cust ID 1不應被選中。應該只選擇23

如何使用t-sql合併此邏輯?

回答

0
SELECT DISTINCT CUSTID 
FROM T as T1 
WHERE VisitTime between '2013-01-01 00:00' AND '2013-01-31 23:59' 
AND NOT EXISTS (SELECT T.CustID FROM T 
         WHERE T.CustId=T1.CustId and VisitTime < '2013-01-01') 
+1

您還應該添加一些解釋,它通常比僅用於代碼的答案更好。 –

5
SELECt t.CustID 
FROM Table1 t 
GROUP BY t.CustID 
HAVING MIN(VisitTime) >='01/01/2013 00:00:00' AND MIN(VisitTime) < '02/01/2013 00:00:00' 
--same test on MAX(vistTime) if needed 

SqlFiddle

+0

@dasblinkenlight嗯,只是指http://stackoverflow.com/a/749663/961526。錯,還是? –

+0

糟糕,你是對的,不知何故,我認爲這是MySQL的一秒鐘精度。在SQL Server中使用'> = ... AND <'更好。 – dasblinkenlight