2016-10-05 5 views
2

を保持していない場合にのみ返す:SQL - 行が、私は<strong>NO</strong>行が例えば一定値</p> <p>を保持する場合にのみ、<em>ID</em>を返す方法を探していた値

*ID* | *Date*  
1 | 01/01/2001  
1 | 02/02/2002  
1 | 03/03/2003 

の場合私はIDを返すようにしたいのですが、02/02/2002に等しい日付がない場合にのみ、どのようにスクリプトを書くのですか?私が試み、以下で失敗しました:

select *ID* 
from (example) 
where date != 02/02/2002 

問題は、これが依然としてID返すことである - 最初と最後の行として2002年2月2日に等しくない1、。私が目指しているのは、少なくとも1つの行が一致する日付を保持しているため、結果が返されないということです。

いずれの行にも一致する日付がある場合は、IDを完全にスキップするスクリプトが必要です。何の日付が一致していませんので、それを利用した際に明確にするため

以下IDを返す必要があり、上記のように「選択」:あなたはGroup By必要

*ID* | *Date* 
2  | 03/03/2003  
2  | 04/04/2004  
2  | 05/05/2005 
+3

どのDBMSですか?クロスソリューションが必要ですか? – Aleksej

答えて

3

Having

select ID 
From yourtable 
group by ID 
Having count (case when date != '02/02/2002' then 1 end) = count(*) 

ようにmathguyによると、これも動作します

select ID 
From yourtable 
group by ID 
Having count(case when date = '02/02/2002' then 1 end) = 0 
+2

または、より簡単には、「カウントしている(日付が2002年2月2日、1が終了の場合)= 0です。もちろん、日付は02/02/2002として書かれるべきではありませんが、それは別の問題です(私はここでOPをたどったことを理解しています)。 – mathguy

+0

@mathguy - true ..私の答えの一部として追加されました –

+0

ありがとう、あなたは私に多くのトラブルをここに保存しました! –

関連する問題

 関連する問題