2014-01-30 28 views
0

我想基於這個問題,以創建成員計數空值的最大續集 - MDX查詢

我有一個產品A出售 我想找到的連續兩天的最大範圍,而不會出售

例如:

天1,2,3產品不出售,之後,它連續15天銷售,在第19天它沒有出售2天,之後它每天銷售,直到月底

所以我最多的日子沒有UT銷售爲3

回答

0

下面的查詢在Microsoft立方體試樣冒險提供了運作的,你想要什麼:

WITH Member Measures.[days without sales] AS 
      IIf([Measures].[Internet Sales Amount] > 0 
       , 0 
       ,(Measures.[days without sales], [Date].[Calendar].CurrentMember.PrevMember) + 1 
       ) 
    Member Measures.[Max days without sales] AS 
      Max([Date].[Calendar].[Date].Members 
       ,Measures.[days without sales] 
       )   
SELECT { [Measures].[Max days without sales] } 
     ON COLUMNS 
    FROM [Adventure Works] 
WHERE [Product].[Product].&[486] 

的措施days without sales是遞歸定義,並返回多少天直到幷包括當前成員[Date].[Calendar]層次結構沒有銷售。您可能需要修改「無需銷售」的標準,但請記住,在MDX中,數字比較將NULL視爲0--這與SQL不同。 如果這個層次結構中的每個成員都有一個成員,即這個層次結構中沒有差距。而實際上,這個定義比僅僅工作幾天更具有一般性:如果你使用[Date].[Calendar].CurrentMember的月份,它會給你沒有銷售額的月數等等。它可以用於層次結構的每個級別。

的措施Max days without sales不包含在其定義的產品,它提供了最大天無論是在上下文(在這種情況下,WHERE子句中的產品)。

請注意 - 因爲實際上有一個環比的[Date].[Calendar]層次中的所有天計算Measures.[Max days without sales]時,並在該遞歸沿着前幾天再次迭代,而這一切在結果集中的每個細胞 - 這可能大報告速度緩慢。

+0

非常感謝你,這就是我想要的 – Harthur90