![](/img/trans.png)
[英]What do I need to change in my T-SQL pivot query to achieve this specific output?
[英]What might be causing an incoherent output from my T-SQL query when using this specific filter?
我正在使用SSMS
並且具有以下T-SQL查詢:
USE MyDatabase
SELECT
...
FROM VIEW1
WHERE [ArrivalDate] BETWEEN '2015-01-01' AND '2018-11-30'
AND ([Reason For Stay] = 'SINGL' AND [Total Guest] = 2 AND [Sum of Child] = 0)
AND [Booking type] = 'FIT'
上面的查詢輸出250條記錄。
在查詢末尾添加以下過濾器將輸出30條記錄:
AND [Title] = 'MR&MRS'
當我將上面的過濾器更改為:
AND [Title] <> 'MR&MRS'
我預計將獲得220條記錄(這很明顯),但是查詢輸出188條記錄!
在SSMS
的“消息”標簽下,我得到以下信息:
警告:通過合計或其他SET操作消除了空值。
這可能是怎么回事? 以及如何更正我的T-SQL查詢以獲取220條記錄?
您需要處理NULLs
:
USE MyDatabase
SELECT
...
FROM VIEW1
WHERE [ArrivalDate] BETWEEN '2015-01-01' AND '2018-11-30'
AND ([Reason For Stay] = 'SINGL' AND [Total Guest] = 2 AND [Sum of Child] = 0)
AND [Booking type] = 'FIT'
AND ([Title] <> 'MR&MRS' OR [Title] IS NULL)
-- here
相關: SQL的三值邏輯
這是預料之中的,因為與null
值比較時有特殊行為:
與null
值的任何比較都將評估為unknown
,這將從結果中排除記錄。
您可以在此處獲得更多信息: SQL中的三值邏輯 。 在那里您可以閱讀:
沒有什么等於空。 甚至沒有null等於null
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.