使用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
、次の情報が表示されます。
警告:NULL値は、集計またはその他の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の3値論理
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加