Если я правильно понял ваш вопрос, вам нужна логика, подобная этой:
declare @valueToFind nvarchar(10) = 'something'
, @date DateTime = '2018-01-01'
if exists (select top 1 1 from TablelistingValidValues where AValue = @value)
begin
if exists (select top 1 1 from TableWithActualData where AValue = @value and ADate = @date)
begin
select *
from TableWithActualData
where AValue = @value
and ADate = @date
end
else
begin
throw 50001, 'The record does not exist on the given date.', 1
end
end
else
begin
throw 50000, 'The record does not exist / AValue is invalid.', 1
end
т.е.
- У вас есть переменная, содержащая некоторое значение.
- У вас есть другая переменная, содержащая дату.
- Если это значение появляется в определенной справочной таблице, оно считается действительным.
- Если значение недопустимо (не отображается в таблице поиска), мы выдаем ошибку.
- Если значение появляется, вы хотите выбрать все записи с этим значением на указанную дату.
- Если есть записи для этого значения / даты, вы хотите их вернуть
- Если нет подходящих записей, вы хотите выдать другую ошибку.
Примечание: 50000/50001 - номера ошибок, которые вы можете определить; то есть, чтобы в каждом месте, где вы выдавали ошибку, у вас был уникальный номер. Как правило, я полагаюсь больше на сообщение, чтобы дать информативную информацию; но номер тоже может быть полезным.