2012-04-16 58 views
1

我想創建一個交叉表,其中y軸表示月份,x軸表示上一年和當前年份。比較Cognos RS中的年份 - 外部連接不起作用

    2011 | 2012 
Shop_1 | Jan | 123 | 456 
      Feb | 789 | 1011 
      ... | ... | ... 
      Dez | 234 | 454 (for the current year, the future months are either filled with predicted numbers or NULL) 
---------------------------------- 
Shop_2 | Jan | 264 | 23409 
      ... | ... | ... 
      Dez | 234 | 454 

的數據源是關係型的,所以我創建了每年兩個查詢項目,在SQL它會是這樣的:

SELECT 
shop, month, numberOfOrders 
FROM myFactTable 
INNER JOIN Dim_date ... 
INNER JOIN Dim_shop ... 
WHERE Dim_date.year = 2012 

然後我加入這2個查詢3個連接。

  • year2012query.Shop = year2011query.Shop
  • year2012query.Month = year2011query.Month
  • year2012query.Year > year2011query.Year

並設置基數到0..N在兩個雙方使它成爲outer join。我已經嘗試了基數的其他可能性,但沒有任何工作。問題是,我只能得到當月的4月份。所以OUTER JOIN不起作用。

所以我在想,我的Framework Manager模型中的基數可能會發揮作用。這是一個星型模式和基數始終是

Dimension Table <--> Fact Table 
1..1     1..n 

改變這

Dimension Table <--> Fact Table 
1..1     0..n 

剛,該報告的性能變得不可接受,結果是怪異的效果:

    2011 | 2012 
      Apr |  | 
      May |  | 
      Jun |  | 
      ... |  | 
      Dez |  | 
---------------------------------- 
Shop_1 | Jan | 123 | 456 
      Feb | 789 | 1011 
      Mar | 123 | 123 
      Apr | 234 | 454 
---------------------------------- 
Shop_2 | Jan | 264 | 23409 
      Feb | 7123 | 1011 
      Mar | 1223 | 123 
      Apr | 3445 | 454 

如何我可以實現嗎?去年全部顯示?

回答

0

我能夠自己解決它。在FM模式的基數保持不變

Dimension (1..1) <--> (1..n) Fact 

我的錯誤是在加入當前和過去的一年中查詢時選擇當前一年中的月份。