У меня есть таблица с людьми, inactive-flag
(бит), указывающая активный/неактивный и fromdate
, todate
.SQL Server: WHERE Предложение об исключении данных при выборе
a) Неактивный = 1 указывает, что кто-то вообще «неактивен». Если есть дата в поле fromdate и todate, это означает, что в целом он не активен
EXCEPT
в течение этого периода.b) Неактивный = 0 указывает, что кто-то является общим «активным». Если есть дата в поле
fromdate
иtodate
, это означает, что в целом он активенEXCEPT
в течение этого периода.c) Последний вариант - это лица, у которых есть только неактивные = 0, без исключения даты (fromdate и todate -
NULL
).
Я хочу отфильтровать всех лиц a) и c), за исключением b).
Я пробовал много, но не смог решить проблему.
Я нашел решение для a) и c), но не для b). я пытался для б):
WHERE inaktiv=0 AND (Not (fromdate >=convert(date,getdate()) AND todate <=convert(date,getdate())))
вы можете использовать «союз» с несколькими избранными статусами –
почему вы хотите b) случаи, если вы хотите только a) и c) случаи? –
Вы забыли 'или Неактивно = 1'. Также путаное отрицание сравнения с датой может быть абсолютно ясным '(fromdate <@date и todate> @date)' –