2014-02-20 4 views
2

В моей таблице есть 2 столбца, я хочу передать два параметра даты, т.е. StartDate и End Date в мою хранимую процедуру.Предыдущие данные за год

Предположим, я передам его 31-Jan-2014 и 20-Feb-2014. Между этими двумя датами осталось почти три недели, и я хочу показать данные между тремя неделями до указанной даты и тремя годами ранее.

Date---------------- Sales(2014)-------- Sales(2013)--------Sales(2012)------ Sales(2011) 
20-Feb-2014   100$    140$    150$    900$ 
19-Feb-2014   100$    140$    150$    900$ 
18-Feb-2014   100$    140$    150$    900$ 
17-Feb-2014   100$    140$    150$    900$ 
. 
. 
. 
1-Feb-2014   100$    140$    150$    900$ 
31-Jan-2014   120$     150$    123$    200$ 
+0

@ChristosPaisios Я думаю, что я вижу 'SQL-server' помечен в этом вопросе. –

+0

Я использую sql server 2012> я хочу query.Thanks –

+0

Вы просто хотите включить значение за тот же день месяца в предыдущие годы (так что неважно, что вы сравниваете, например, понедельник с воскресеньем)? Как вы хотите обрабатывать существующие или отсутствующие в текущем/предыдущем году дни прыжка? –

ответ

0

Это может быть не самый лучший способ, но я бы это сделал. Вы не упомянули, если бы какая-либо агрегация в этом запросе, так что если вы работаете сумму, то это нужно будет изменить

Select [DATE], Sales(2014) , 
(Select Sales from dbo.table as t_minus_one_year where Year([DATE]) = Year(@StartDate) - 1) as Sales(2013), 
(Select Sales from dbo.table as t_minus_two_years where Year([DATE]) = Year(@StartDate) - 2) as Sales(2012), 
(Select Sales from dbo.table as t_minus_three_years where Year([DATE]) = Year(@StartDate) - 3) as Sales(2011) 
from dbo.table as t2014 where date between @StartDate and @Enddate 
+0

Дорогой он не соответствует требованиям. Что я хочу, так это показать предыдущие данные за три года, но все данные предыдущих трех лет находятся между указанными датами. –

+0

отредактирован, чтобы включить весь предыдущий год (ы) – wruckie

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