1

1月から12月の間に購入金額が増減したかどうかを教えてくれるレポートを作成しています。アカウントのインスタンスごとに1つのレコードがあるため、通常、顧客ごとに4(四半期ごとの場合)から12(月ごとの場合)のレコードがあります。このようなことをするSQLクエリを作成するにはどうすればよいですか?基本的に、すべての月を調べて、いずれかの月に変更があったかどうかを判断する必要があります。

これは私が現在持っているものです:

Yr/Mnth  Amt    
1212    51.00   
1209    69.00  
1206    69.00       
1203    69.00

これが私が見たいものです:

March    June    September   December    Amount Diff  Increase or Decrease
69.00    69.00    69.00        51.00        18.00          Decrease  
4

2 に答える 2

1

おそらくあなたのレポートのためにこれを使うことができます

 ;WITH cte AS
 (
  SELECT *, ROW_NUMBER() OVER (ORDER BY [Yr/Mnth]) AS Id
  FROM dbo.purchase
  )
  SELECT DATENAME(mm, DATEADD(mm, RIGHT(c1.[Yr/Mnth],2)-1, '20010101')) AS [Month], 
         c1.Amt, ISNULL(c2.Amt, c1.Amt) - c1.Amt AS 'Amount Diff', 
         CASE WHEN c2.Amt - c1.Amt > 0 THEN 'Decrease'
              WHEN c2.Amt - c1.Amt < 0 THEN 'Increase'                   
              ELSE '' END AS 'Increase or Decrease'
  FROM cte c1 LEFT JOIN cte c2 ON c1.Id = c2.Id + 1

SQLFiddle のデモ

于 2013-02-18T22:42:01.220 に答える
0

次のようなものが必要です。

select case when amount1 > amount2 then 'increase'
when amount2 < amount1 then 'decrease'
else 'no change'
end changetype
from 
(select t1.something amount1, t2.somethingelse amount2
from yourtable t1 join yourtable t2 on something
etc) alias_required

空白を埋めることができるはずです。

于 2013-02-18T22:20:04.630 に答える