2017-07-18 10 views
0
Business Unit | Date | Sales 
North America | 5/1/17 | 5,000 
North America | 4/1/17 | 4,000 
North America | 3/1/17 | 3,000 
North America | 2/1/17 | 2,000 
North America | 1/1/17 | 1,000 
      ............ 
North America | 5/1/16 | 4,000 
North America | 4/1/16 | 3,000 
North America | 3/1/16 | 2,000 
North America | 2/1/16 | 2,000 
North America | 1/1/16 | 500 
     ............ 
Asia   | 5/1/17 | 5,000 
Asia   | 4/1/17 | 2,000 
Asia   | 3/1/17 | 1,000 
Asia   | 2/1/17 | 3,000 
Asia   | 1/1/17 | 1,500 
      ............ 
Asia   | 5/1/16 | 4,000 
Asia   | 4/1/16 | 2,000 
Asia   | 3/1/16 | 500 
Asia   | 2/1/16 | 1,500 
Asia   | 1/1/16 | 1,000 

各月はすべて38,30、または31日で構成されていますが、例を簡単にするために、上記のデータの最初の日を示しました。このデータは、毎日であり、複数年さかのぼり、前述したように同じ列の行に対するYoY計算

Business Unit | Date | Sales | Year over Year Change | 
North America | 5/1/17 | 5,000 |   25%   | 
North America | 4/1/17 | 4,000 |   33%   | 
North America | 3/1/17 | 3,000 |   50%   | 
North America | 2/1/17 | 2,000 |   0%   | 
North America | 1/1/17 | 1,000 |   50%   | 
      ............ 
North America | 5/1/16 | 4,000 |   xx%   | 
North America | 4/1/16 | 3,000 |   xx%   | 
North America | 3/1/16 | 2,000 |   xx%   | 
North America | 2/1/16 | 2,000 |   xx%   | 
North America | 1/1/16 | 500 |   xx%   | 
     ............ 
Asia   | 5/1/17 | 5,000 |   25%   | 
Asia   | 4/1/17 | 2,000 |   0%   | 
Asia   | 3/1/17 | 1,000 |   100%   | 
Asia   | 2/1/17 | 3,000 |   100%   | 
Asia   | 1/1/17 | 1,500 |   50%   | 
      ............ 
Asia   | 5/1/16 | 4,000 |   xx%   | 
Asia   | 4/1/16 | 2,000 |   xx%   | 
Asia   | 3/1/16 | 500 |   xx%   | 
Asia   | 2/1/16 | 1,500 |   xx%   | 
Asia   | 1/1/16 | 1,000 |   xx%   | 

以下は、私が達成するために探していた出力の例です。すべての助けを事前に感謝します!あなたは以下のように問い合わせることができます

答えて

1

Select coalesce(lastyear.[Business Unit], currentyear.[Business Unit]) as BusinessUnit, currentyear.[date], lastyear.[date] as [LastYear Date], 
    Format((1-(lastyear.Sales*1.0)/currentyear.Sales), 'p') 
from #yoydata lastyear 
left join #yoydata currentyear 
on lastyear.[date] = dateadd(yy,-1,currentyear.[date]) 
and lastyear.[Business Unit] = currentyear.[Business Unit] 
+0

おかげスーパー近くにありますトン。実際の計算列はオフになっているようです。実際のデータにプラグインすると、正しい日付が取得されますが、昨年の日付に基づいて変更された年を計算していません – ls101

+0

それは意味がありますか? – ls101

+0

何が問題になっていますか? –

1
SELECT 
    COALESCE(lastyear.[bu], currentyear.[bu]) AS BusinessUnit 
    , currentyear.[dt] 
    , lastyear.[dt]        AS [LastYear Date] 
    , Format((1-(lastyear.Sales*1.0)/currentyear.Sales), 'p') 
FROM 
    #yoydata lastyear 
     LEFT JOIN #yoydata currentyear ON lastyear.[dt] = dateadd(yy,-1,currentyear.[dt]) 
              AND lastyear.bu = currentyear.bu 
+0

以前の回答では、 – lookslikeanevo

関連する問題