2014-09-21 1 views
0

Процедура следующей процедуры показана только в том случае, если дата, указанная в качестве параметра, но не более ранняя дата. я указал @date <= table2.date_column;, но это предложение только возвращает мне значение, которое соответствует не дата ранее датызапросить все более ранние даты перед параметром sql server

create procedure pro 
(
    @code int, @date datetime, @total smallint OUTPUT 
) 
as 
begin 
select 
    table1.column1, 
    table2.date_column 
from 
    table1 
    inner join 
    table2 on table1.column1 = table2.column2 
where 
    table1.column1 = @code 
    and 
    table2.date_column = @date 
    and 
    @date <= table2.date_column; 

set @total = @@rowcount; 
end 

выполнить

declare @total smallint 
exec pro '1', '20140920', @[email protected] output 
select @total 
+0

вы еще 'table2.date_column = @ date'. Вытащите его. – Laurence

ответ

0

Это ваш where пункт:

where table1.column1 = @code and 
     table2.date_column = @date and 
     @date <= table2.date_column; 

You имеют два сравнения с date_column. Вам нужен только один. Для равенства:

where table1.column1 = @code and 
     table2.date_column = @date; 

За все даты до:

where table1.column1 = @code and 
     table2.date_column <= @date; 
Смежные вопросы