0
我有一個臨時表(見圖)和事故列數和可預防事故的數量應該顯示數據,但他們都是空的。我如何解決它?謝謝警告:空值被消除
我有一個臨時表(見圖)和事故列數和可預防事故的數量應該顯示數據,但他們都是空的。我如何解決它?謝謝警告:空值被消除
原因是因爲使用的是空值
做聚合讓我用下面的例子來說明:
create TABLE #test (ID INT, Qty INT, Price MONEY)
INSERT INTO #test (ID, Qty, Price) SELECT 1, 25, 100
INSERT INTO #test (ID, Qty, Price) SELECT 2, NULL, 200
INSERT INTO #test (ID, Qty, Price) SELECT 3, 5, NULL
SELECT SUM(Qty) FROM #test WHERE ID IN (1,3)
-- no warning
--Because qty in id 1,3 is not null
SELECT SUM(Price) FROM #test WHERE ID IN (1,3)
-- Warning: Null value is eliminated by an aggregate or other SET operation.
-- Because price 100 is added with NULL
SELECT AVG(Qty) FROM #test WHERE ID IN (1,2)
-- Warning: Null value is eliminated by an aggregate or other SET operation.
-- Because qty is null + 25 to get average
但是OP在所有聚合上都使用了ISNULL ....因此問題不應該顯示在代碼片段中。 – scsimon
你確定這就是它拋出的警告?你是否已將這部分代碼分離到另一個SSMS窗口中?無論你想擺脫這個警告,你都可以'SET ANSI_WARNINGS OFF GO'但我很確定這不是你的警告來自哪裏。 – scsimon
您的LEFT JOIN實際上是INNER,因爲WHERE謂詞要求左連接的表列不爲NULL。可能是這個問題。警告是OK請參閱http://stackoverflow.com/questions/18719436/getting-warning-null-value-is-eliminated-by-an-aggregate-or-other-set-operation – Serg
什麼是下一段代碼爲最終選擇? – SQLChao