2012-02-07 8 views
0

ColumnAとColumnBの2つの列があり、時にはcolumnBにデータが取り込まれず、eになるはずです。私は、すべてのColumnAが空になっていない場合にのみ選択するクエリを探しています。すべての値がNULLの場合、同じキーでSQLを選択する列

ColumnA|ColumnB 
Apples| 
Apples| 
Apples|Orange 

これは私は何ですが、それはColumnAが同じ値を持つnullであり、ColumnBが移入され言うので、これは正しくありません。私は、columnBのすべてが空になっていない場合にのみ、クエリが行を返すようにしたい。

SELECT ColumnA 
FROM tblMyTable 
WHERE ColumnA IN 
     (SELECT ColumnA 
     FROM tblMyTableB 
     WHERE ColumnB IS NULL) 
+0

:これは

ここでいくつかの非ヌルその列を除く上

DECLARE @MyTable TABLE (ColumnA varchar(20) NOT NULL, ColumnB varchar(20) NULL); INSERT @MyTable VALUES ('Apple', NULL),('Apple', NULL),('Apple', 'Orange'), ('Banana', NULL),('Banana', NULL), ('Strawberry', 'Pie'), ('Strawberry', 'Pie') SELECT ColumnA FROM @MyTable EXCEPT SELECT ColumnA FROM @MyTable WHERE ColumnB IS NOT NULL 

より多くの列Bを除いて、列Aを取得するように表すことができます。 ? – Matten

答えて

2

あなたのロジックが逆方向にあるように見えます:

  • あなたのクエリがが列B
  • NULL値である私はあなたが値をしたいが考えるの列Aの値を検索しますが列Bの非NULL値がない列A

は、2つの場所でNOTを追加してみてくださいとの重複結果避けるためにDISTINCTを追加します。ColumnAがNULL可能ならばさらに

SELECT DISTINCT ColumnA 
FROM tblMyTable 
WHERE ColumnA NOT IN 
     (SELECT ColumnA 
     FROM tblMyTableB 
     WHERE ColumnB IS NOT NULL) 

を、あなたはあなたの内側のクエリそうNOT IN式から、これらのNULL値を除外する必要がありますNULL代わりのTrueので、何も結果が返されませんが返されます:

SELECT DISTINCT ColumnA 
FROM tblMyTable 
WHERE ColumnA NOT IN 
     (SELECT ColumnA 
     FROM tblMyTableB 
     WHERE ColumnA IS NOT NULL 
     AND ColumnB IS NOT NULL) 
+0

いいえ、ColumnAにあるすべての値に対してcolumnBがnullのインスタンスだけを検索したいからです。 –

+0

あああなたの権利です! –

3

にあなたの現在のクエリはあなたにあまりにも多くの結果が得られます。あなたは排除したいものはColumnBがあるものです:

SELECT ColumnA 
FROM tblMyTable 
WHERE ColumnA IN 
     (SELECT ColumnA 
     FROM tblMyTableB 
     WHERE ColumnB IS NULL) 
AND NOT ColumnA IN 
     (SELECT ColumnA 
     FROM tblMyTableB 
     WHERE ColumnB IS NOT NULL) 

それとも、よりスマートである:

select ColumnA,COUNT(ColumnB) from tblMyTable 
group by ColumnA having COUNT(ColumnB) = 0 

COUNT(Expression)は唯一の非nullで式が使用

+2

+1の2番目のバージョンのクエリです。 –

+0

@マークバニスター - ええ、最初はもっと速く汚れていて、うまくいくはずでした。それは私に2番目の権利を取得しようといくつかの試みが(私はあなたの書かれていた同じ周りに投稿して申し訳ありません) –

関連する問題