2016-06-02 6 views
-1

У меня возникли проблемы с попыткой получить указанные ниже MPAN и TimePeriodStart как обязательные параметры, а остальные - необязательные. Однако, когда я запускаю подсказки, результаты не проходят. Что-то я здесь делаю неправильно?Проблемы с T-SQL с дополнительными запросами

alter procedure task2assigned 
(
@MPAN varchar(13), 
@TimePeriodStart datetime = null, 
@TimePeriodEnd datetime = null, 
@BSCValidation varchar(1) = null, 
@ReadType varchar(1) = null 
) 

A 

SELECT * FROM TABLES 

Здесь весь запрос, поскольку проблема лежит с параметрами:

where a.J0003 = (@MPAN) 
and d.J0016 >= DateAdd(mm,-36,@TimePeriodStart) 
and (@TimePeriodEnd is null or d.J0016 <= DateAdd(mm,-36,@TimePeriodEnd)) 
and (@BSCValidation = null or d.J0022 = @BSCValidation) 
and (d.J0171 is null or d.J0171 = @ReadType) 
+1

Поскольку мы не знаем, как выглядят ваши данные, мы не можем ответить на этот вопрос. Pls предоставляет нам образцы данных, ожидаемый результат и фактический результат запроса. – Shadow

+0

Спасибо тень, не знаю, я сделал это. Это фиксировало это приветствие – abs786123

ответ

0

Почему вы вдруг положили @BSCValidation = нуль .. null не может сравниваться с использованием = знака .. .. в любом случае ниже сценария может помочь вам

Редактировать 1: Как вы просили в комментарии ..

alter procedure task2assigned 
(
@MPAN varchar(13), 
@TimePeriodStart datetime = DATEADD(year,3,GETDATE()), 
@TimePeriodEnd datetime = GETDATE(), 
@BSCValidation varchar(1) = null, 
@ReadType varchar(1) = null 
) 

AS 
BEGIN 

    SELECT * FROM TABLES 
    WHERE a.J0003 = @MPAN 
    AND (@TimePeriodStart IS NULL OR d.J0016 >= DateAdd(mm,-36,@TimePeriodStart)) 
    AND (@TimePeriodEnd IS NULL OR d.J0016 <= DateAdd(mm,-36,@TimePeriodEnd)) 
    AND (@BSCValidation IS NULL OR d.J0022 = @BSCValidation) 
    AND (@ReadType IS NULL OR ISNULL(d.J0171,@ReadType) = @ReadType) 

END 
+0

Также, если бы вы могли помочь, меня спросили: «Использует дату начала и окончания в качестве параметров (если они не указаны, установите значение по умолчанию на 3 года раньше со дня запуска запроса)», как бы я мог сделайте это как значение по умолчанию для параметра. благодаря – abs786123

Смежные вопросы