2013-08-19 96 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