MSDNによると、DISTINCTも使用されていない限り、TSQL COUNT(*)関数の結果にはNULL値が含まれます(ソース:http://msdn.microsoft.com/en-us/library/ms175997.aspx) 。
ただし、私のクエリではNULL値は無視されています。これをテストするために、小さなテーブルを作成し、いくつかのデータを入力しました。
CREATE TABLE tbl (colA varchar(1), colB varchar(10))
INSERT tbl VALUES
('Y', 'test1'),
('Y', 'test2'),
(null, 'test3'),
(null, 'test4'),
('N', 'test5')
次に、次の2つのクエリを実行しました。
SELECT count(*) FROM tbl
WHERE colA <> 'N'
と
SELECT DISTINCT colA FROM tbl
WHERE colA <> 'N'
どちらの結果もNULL値を無視します。結果としてそれぞれ2と「Y」が得られます。なぜこれが起こっているのか途方に暮れています。誰かが私を手がかりにしてくれませんか?
SQL Fiddleでシミュレートされた結果:http ://sqlfiddle.com/#!3 / 8f00b / 9