Проверка нуля и сравнение в предложении - PullRequest
0 голосов
/ 05 июня 2019

У меня есть две таблицы в моей базе данных. Первый называется F, а второй - T. F хранит две информации. «date_received» и «date_removed», которые могут быть нулевыми. T хранит только «дату», которая является произвольной датой. F может хранить информацию для объекта. Например,

2019-05-19 2019-05-31 ==> Означает, что он принадлежал кому-то между этими датами

2019-06-03 NULL ==> Означает, что он все еще кому-то принадлежит.

У меня есть две даты в T, 2019-05-25 и 2019-06-05. Это легко найти на 2019-05-25, потому что я могу использовать предложение между, но 2019-06-05 Не могу. Мне нужно написать условие if-else или case, чтобы проверить, является ли F.date_removed нулевым или нет

CASE
  WHEN F.date_removed IS NULL THEN T.date > F.date_received
  ELSE  T.date BETWEEN F.date_received AND F.date_removed
END

Как я могу справиться с этой проблемой. Мне нужно переключиться между двумя вариантами сравнения в соответствии с нулем "date_removed"

Ответы [ 2 ]

2 голосов
/ 05 июня 2019

Из того, что я понимаю, ваше правило останется в предложении where, так что вы можете сделать это так.

WHERE
((F.date_removed IS NULL AND T.date > F.date_received) OR (T.date BETWEEN F.date_received AND F.date_removed))
1 голос
/ 05 июня 2019

Еще один вариант, который немного менее многословный.

WHERE
        T.date >= F.date_received
    AND (F.date_removed IS NULL OR T.date <= F.date_removed)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...