以下查詢生成不同的計數。在我看來,它們是相同的。使用COALESCE和OR的SQL Server結果有所不同
SELECT
COUNT(*)
FROM
item1
RIGHT JOIN
(Item2
INNER JOIN
item_master ON Item2.Number = item_master.number) AND (item1.itemId = Item2.itemId)
WHERE
COALESCE([Item2].[Amount], item1.Amount, [item_master].[amount], 0) > 0
SELECT
COUNT(*)
FROM
item1
RIGHT JOIN
(Item2
INNER JOIN
item_master ON Item2.Number = item_master.number) AND (item1.itemId = Item2.itemId)
WHERE
(Item2.Amount is not NULL and Item2.Amount > 0) OR
(item1.Amount is not NULL and item1.Amount > 0) OR
(item_master.amount is not NULL and item_master.amount > 0)
額外的','在COALESCE' 0'參數是不必要的和-IN我意見混淆。 – GolezTrol
但是不是NULL> 0的問題? – phpdev76
這會導致錯誤,就像'0> 0'一樣。 :)你也不需要在第二個查詢中使用'Item2.Amount不是NULL'和類似的檢查。 – GolezTrol