2015-08-13 5 views
0

Я имею дело с датами совсем немного, делая select заявления, как следующие за много разных лет:Макросы/переменные в Sybase IQ - изменение строки?

select sum(sales) from DM.SALES_SHEET where sale_date < '1995-01-01'; 
select sum(sales) from DM.SALES_SHEET where sale_date < '1996-01-01'; 
select sum(sales) from DM.SALES_SHEET where sale_date < '1997-01-01'; 
... 

Не должен ли быть более эффективным способом запроса этих данных? Я хотел бы создать переменную, которую я мог бы просто обновлять каждый раз, когда мне нужен еще один год. Это будет выглядеть следующим образом (я не знаю, является ли declare правой командой).

declare @specific_date string; 
set @specific_date = '1995-01-01'; 

select sum(sales) from DM.SALES_SHEET where sale_date < @specific_date; 

Есть ли способ использовать строку для этого типа переменных? Мой столбец sale_date - строка.

ответ

0

create procedure dynamic_date (@specific_date date) 
 
as 
 
begin 
 

 
declare @specific_date_string varchar(500) 
 
set @specific_date_string = 'select sum(sales) from DM.SALES_SHEET where sale_date < ' + @specific_date + ';' 
 
exec @specific_date_string 
 

 
end 
 

 
--example: exec dynamic_date 'your_date'

Держи друга! Cheers

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