Member 10379103 Ответов: 2

Условный поиск по полю даты


У меня есть хранимая процедура, которая должна вернуть всех домашних животных, которые либо имели все свои прививки, либо не имели всех своих прививок.

Вот моя хранимая процедура:
SELECT PetName, OwnerLName, OwnerFName, VaccinationDate  
  FROM [dbo].[myVetsOffice]
  WHERE (@PetName IS NULL OR PetName LIKE  '%' + @PetName + '%')
    AND (@OwnerLName IS NULL OR OwnerLName LIKE  '%' + @OwnerLName + '%')
    AND (@OwnerFName IS NULL OR OwnerFName LIKE  '%' + @OwnerFName + '%')
ORDER BY OwnerLname, OwnerFname	


У меня есть параметр Y/N, который, если он равен Y, мне нужно добавить VaccinationDate is NOT NULL, иначе если параметр Y/N равен N, то включите предложение, где VaccinationDate равен null.

Как мне включить это в свой выбор? Я попытался включить A и случай, когда @myparameter = 'Y', то VaccinationDate не является нулевым, но это не работает. Как еще я могу включить этот последний кусочек логики?

Что я уже пробовал:

CASE statement, Google search, сайт msdn, блоги, переполнение стека

2 Ответов

Рейтинг:
1

Peter Leow

Вместо случая, когда, попробуйте это:

WHERE (@myparameter = 'Y' AND VaccinationDate IS NOT NULL)
OR (@myparameter = 'N' AND VaccinationDate IS NULL)


Member 10379103

Питер, спасибо за совет. Это помогло. У меня есть одна небольшая модификация - если @myparameter - "Y", врач хочет увидеть все записи о вакцинации - только некоторые из них, когда @myparameter - "N". У меня есть оператор IF, который отображает различные версии запроса на основе @myparameter.

Есть ли более эффективный способ отображения всех полей, когда @myparameter имеет значение "Y"?

Рейтинг:
1

Member 9831003

Для этой части случая он будет принимать только определенное значение или значение столбца, то есть он не будет принимать столбец not null или столбец null .

В этой части вы должны сделать еще одно заявление о случае и написать свою логику соответственно.

Спасибо