2014-03-24 52 views
0

如果我運行以下操作,那麼2007年和2008年的客戶都是(null)互聯網銷售額的整個部分 - 這是爲什麼?如何使用EXISTS過濾只是誰擁有了多年的結果在選擇EXISTS未按預期完全篩選

筆記客戶:多年的選擇可能不同,所以需要InitialSet是上下文感知所以我用[Date].[Calendar Weeks].CURRENTMEMBER withing EXISTS的功能。

WITH 
    SET [InitialSet] AS 
     EXISTS(
     {[Customer].[Customer].[Customer].MEMBERS}, 
     [Date].[Calendar Weeks].CURRENTMEMBER, 
     'Internet Sales' 
     ) 
    SET [OrderedSet] AS 
    NONEMPTY 
    (
     ORDER 
     (
     [InitialSet], 
     [Measures].[Internet Sales Amount], 
     BDESC 
    ) 
    ,([Measures].[Internet Sales Amount],[Date].[Calendar Weeks].CURRENTMEMBER) 
    ) 
SELECT 
    { 
     [Date].[Calendar Weeks].[Calendar Year].&[2007], 
     [Date].[Calendar Weeks].[Calendar Year].&[2008] 
    } ON 0, 
    [OrderedSet] ON 1 
FROM [Adventure Works] 
WHERE (
    [Measures].[Internet Sales Amount] 
    ); 

回答

1

集合由Analysis Services通過考慮WHERE子句進行評估,但不使用任何行或列設置。如果你只想評估2007年和2008年的套裝,你必須說明。

實際上,第一組中的[Date].[Calendar Weeks].CURRENTMEMBER將引用[Date].[Calendar Weeks]層次結構的默認成員,即All成員。

+0

+1這些關於自定義集的信息僅在WHERE子句的上下文中是一個重要的啓示 – whytheq