Если я правильно понимаю проблему, вот пример решения:
declare @test table ([year] int, [quarter] int, sales money)
insert into @test values (2001, 1, 1100)
insert into @test values (2001, 2, 2100)
insert into @test values (2001, 3, 3100)
insert into @test values (2001, 4, 4100)
insert into @test values (2002, 1, 1200)
insert into @test values (2002, 2, 2200)
insert into @test values (2002, 3, 3200)
insert into @test values (2002, 4, 4200)
insert into @test values (2003, 1, 1300)
insert into @test values (2003, 2, 2300)
insert into @test values (2003, 3, 3300)
insert into @test values (2003, 4, 4300)
; with summary (quarter, salesTotal) as
(
select quarter, sum(sales)
from @test
group by [quarter]
)
select
s1.quarter [QTR1]
, s2.quarter [QTR2]
, s1.salesTotal [SUM(Sales1)]
, s2.salesTotal [SUM(Sales1)]
from
summary s1
join summary s2
on s1.quarter != s2.quarter
order by
s1.quarter
, s2.quarter
Предполагается, что у вас есть квартальные данные за несколько лет. Общее табличное выражение объединяет все это в кварталы, а оператор select сравнивает каждый квартал с каждым вторым кварталом.