當我在我的WHERE
語句中有條件語句時,是否自動不包含NULL
?NULLS在WHERE語句中 - SQL
例如,在與具有線FROM @data WHERE Trade_Amt > 0 AND Execution_Code != 'EXPIRATION'
,Execution_Code
值是null
將不包括在求和一個GROUP BY
語句的查詢。
如果我包括OR Execution_Code IS NULL
,那麼我會得到比預期更多的記錄。
我發現的唯一工作是將null
值更改爲指定的字符。這是我唯一的選擇還是我錯過了什麼?
一個例子:
表@data
Trade_Amt Execution_Code Trade_Px
-----------------------------------------
4 XVD 5
-4 NULL 5
4 NULL 5
5 EXPIRATION 5
查詢:
SELECT
SUM(Trade_Amt) AS [Trade_Amt],
dbo.ConcatStr(DISTINCT Execution_Code , ',', 'ASC') AS [Execution_Code],
Trade_Px
--above line concatenates execution code strings together during summation
FROM
@data
WHERE
Trade_Amt > 0 AND Execution_Code != 'EXPIRATION'
GROUP BY
Trade_Px
預期輸出:
Trade_Amt Execution_Code Trade_Px
--------------------------------------------
8 XVD 5
我居然得到:
Trade_Amt Execution_Code Trade_Px
--------------------------------------------
4 XVD 5
爲什麼答案是_0_?因爲where子句只包含'trade_amt> 0'? –
另外,包含'is null'的查詢不適合你。 –
它是Trade_Amt的總和。 – pavbagel