use*_*933 1 sql t-sql sql-server
我正在使用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'
Run Code Online (Sandbox Code Playgroud)
以上查询输出250条记录.
在查询末尾添加以下过滤器输出30条记录:
AND [Title] = 'MR&MRS'
Run Code Online (Sandbox Code Playgroud)
当我将上面的过滤器更改为:
AND [Title] <> 'MR&MRS'
Run Code Online (Sandbox Code Playgroud)
我期待得到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
Run Code Online (Sandbox Code Playgroud)
相关:SQL的三值逻辑