2012-04-16 53 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 

我的错误是在加入当前和过去的一年中查询时选择当前一年中的月份。