Я хочу зациклить результат объединения.Это означает, что я объединю данные за квартал (3 месяца).Я использовал WITH, но я точно не знаю об этом (P / s: date - это форматированная строка: 'dd / MM / yyyy', а не datetime).
declare @quarter int;
declare @year int;
declare @i int;
set @quarter = 1;
set @year = 2011;
set @i = 1;
with temp(code, date, value) as
(select code,date,value from test
where convert(int,substring(date,4,2))= @quarter*3+@i
and right(date,4)=@year
union all
select code,date,value from test
where convert(int,substring(date,4,2))= @quarter*3+@i+1
and right(date,4)=@year and from temp where @i <= 3
)
select * from temp;
Пример: в январе было 1 запись.В феврале 2 записи, в марте 3 записи, в апреле 4 записи.В вышеприведенном списке выберите, если я выберу @ квартал = 1, он включает 3 месяца: январь, февраль, март: 6 записей (не включая апрель).