Фильтр результатов в sql на основе внешней переменной - PullRequest
0 голосов
/ 27 апреля 2020

Существует таблица с именем Person, в которой есть столбец даты и времени, который можно обнулять "DeadTime" (если он нулевой, то человек жив, а если он имеет значение datetime, тогда человек мертв.

I также есть переменная includeDead - 0 или 1, переданная из пользовательского интерфейса

Это единственный способ добиться этого? Использование if-else?

if @includeDead = 1
    select * from Person --select all including dead and alive
else
    select * from Person where DeadTime IS NULL --select only alive

Запрос предложений для получения набора результатов в одном выборе без if-else.

1 Ответ

1 голос
/ 27 апреля 2020

Вы можете использовать:

select p.*
from person p
where @includeDead = 1 OR DeadTime IS NULL;

Этот лог c может быть немного сложным, поэтому он также отображается как:

select p.*
from person p
where @includeDead = 1 OR
      (@includeDead <> 0 AND DeadTime IS NULL);
...