CTEを使用すると、コードを整理してクリーンに保つのに役立つことがわかりました。数値を再フォーマットし、Q4を翌年のQ1と一致させる必要がある厄介な部分は、そこで処理でき、メインのクエリは簡単です。
with NewSales (QtrDate, DisplayDate, Year, Quarter, Sales) as (
select
Year - 0.25 + (Quarter / 4.0) as QtrDate,
cast(Year as varchar(10)) + '-Q' + cast(Quarter as varchar(10)) as DisplayDate,
Year, Quarter, Sales
from
@sales
)
select
a.DisplayDate, a.Sales,
b.DisplayDate, b.Sales,
b.Sales - a.Sales as SalesIncrease,
(b.Sales / (a.Sales * 1.0)) - 1 as SalesPctIncrease
from
NewSales a left outer join
NewSales b on a.QtrDate + 0.25 = b.QtrDate
where
a.Sales is not null and b.Sales is not null
四半期のフォーマットとパーセンテージの計算に少しフレア(最低限:)を追加しました。これらの例を使用して、必要に応じて出力をカスタマイズできます。