2016-02-16 53 views
0

我的問題在於找到一個沒有活動的人,從12月1日至2011年或之前沒有任何活動。找到一個沒有活動的人在某個日期前

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 

期望的結果是首選,因爲它會告訴我,誰是不活躍的人。

+2

我認爲你應該在你的select中使用SELECT DISTINCT PersonID。 –

回答

0

簡單GROUP BYHAVING將這樣的伎倆:

SQL Fiddle

SELECT PersonID 
FROM tbl 
GROUP BY PersonID 
HAVING COUNT(CASE WHEN Activity > '20111201' THEN 1 END) = 0 
0

您需要先過濾掉所有項目使用的標準,然後應用在你的結果DISTINCT設置

SELECT DISTINCT PersonID 
FROM YourTableName 
WHERE Activity <= 'Dec-01-2011' 
2

關閉我的頭頂..這樣的事情應該去做

SELECT PersonID 
FROM TableName 
GROUP BY PersonID 
HAVING MAX(Activity) <= '2011-12-01' 
相關問題