我的问题是找到一个自2011年12月1日或之前没有任何活动的非活跃人士。
PersonID Activity
----------------------
Alvin Jan-08-2010
Alvin Mar-11-2011
Alvin Feb-11-2015
Simon Nov-20-2010
Simon Jan-23-2011
Simon Jul-03-2011
Simon Nov-04-2011
Theodore Mar-09-2010
Theodore Oct-08-2013
Dave Aug-13-2012
Dave Jun-01-2014
Dave Apr-23-2015
Ian Aug-09-2010
Ian Nov-30-2010
Ian Jan-25-2011
Ian Mar-14-2011
Clare Sep-03-2011
Clare Aug-15-2014
Gale Jun-18-2010
Gale Dec-03-2010
输出:
PersonID Activity
----------------------
Simon Nov-20-2010
Simon Jan-23-2011
Simon Jul-03-2011
Simon Jul-04-2011
Ian Aug-09-2010
Ian Nov-30-2010
Ian Jan-25-2011
Ian Mar-14-2011
Gale Jun-18-2010
Gale Dec-03-2010
期望的输出:
PersonID
---------
Simon
Ian
Gale
首选所需的结果,因为它会告诉我不活跃的人。
答案 0 :(得分:2)
脱离我的头顶......这样的事情应该这样做
SELECT PersonID
FROM TableName
GROUP BY PersonID
HAVING MAX(Activity) <= '2011-12-01'
答案 1 :(得分:0)
您需要先使用条件过滤掉所有条目,然后在结果集上应用DISTINCT
SELECT DISTINCT PersonID
FROM YourTableName
WHERE Activity <= 'Dec-01-2011'
答案 2 :(得分:0)
简单的GROUP BY
和HAVING
可以解决问题:
SELECT PersonID
FROM tbl
GROUP BY PersonID
HAVING COUNT(CASE WHEN Activity > '20111201' THEN 1 END) = 0