2014-03-03 38 views
0

我有兩列,名稱和日期SQL選擇行,其中不存在

Name  Date 
John  2/21/2014 
Joe  2/21/2014 
Sue  2/22/2014 
Joe  2/22/2014 
Steve  2/23/2014 
John  2/23/2014 

我需要選擇每一個日期,不具有一定的人的聲明。因此,例如,我需要約翰沒有匹配行的日期列表,因爲只有Sue和Joe在該日期有記錄,所以我只會得到2/22/2014。

+0

'..GROUP按日期HAVING名稱='John'' – Mihai

+0

@full:如果你看到其他人幫助你,這是值得添加+1答案看起來正確,因爲這是我們感謝這裏的人們爲此付出努力的方式。例如,GoatCO的答案有一個SQL小提琴,因此可能適合您的情況。 – halfer

回答

2

您可以使用NOT IN

SELECT DISTINCT Date 
FROM Table 
WHERE Date NOT IN 
(
    SELECT Date FROM Table where Name = 'John' 
) 
0

試試這個,也許它有幫助! ;)

SELECT Date 
FROM table 
WHERE 'John' NOT IN Name 
1
SELECT DISTINCT t.Date 
FROM MyTable t 
WHERE NOT EXISTS (
    SELECT 1 
    FROM MyTable t2 
    WHERE t2.Name = 'John' 
    AND t2.Date = t.Date 
) 
1

您可以使用GROUP BYHAVING

SELECT Date 
FROM Table1 
GROUP BY Date 
HAVING MAX(CASE WHEN Name = 'John' THEN 1 END) IS NULL 

語法可能需要調整的訪問。

SQL服務器演示:SQL Fiddle