私は人を含むテーブルがあり、アクティブ/非アクティブを示すinactive-flag
(ビット)とfromdate
、todate
を持っています。SQL Server:WHERE選択中のデータを除外する句
a)非アクティブ= 1は、誰かが一般的に「非アクティブ」であることを示します。 fromdateフィールドとtodateフィールドに日付がある場合は、一般に、この日付期間中に彼はアクティブではありません(
EXCEPT
)。b)非アクティブ= 0は、誰かが一般的な「アクティブ」であることを示します。
fromdate
とtodate
のフィールドに日付がある場合は、一般的に彼はこの日付期間中にEXCEPT
がアクティブであることを意味します。c)最後のオプションは、日付の例外(fromdateおよびtodateフィールドが
NULL
)でなく、Inactive = 0のみの人です。
b)以外のすべての人物a)およびc)をフィルタリングしたいと思います。
私はたくさん試しましたが、問題を解決できませんでした。
a)およびc)の解決策は見つかりましたが、b)の解決策は見つかりませんでした。
WHERE inaktiv=0 AND (Not (fromdate >=convert(date,getdate()) AND todate <=convert(date,getdate())))
マルチ選択の文で "ユニオン"を使うことができます –
あなたはa)とc)のケースだけを望むならb)のケースを望んでいますか? –
あなたは「または非アクティブ= 1」を忘れました。また、日付に対する比較の否定を混同することは絶対に明白です。(fromdate <@dateとtodate> @date) –