2010-07-14 45 views
0
with member [Measures].[BoughtDispenser] as 
    Sum(Descendants([Customer].[Customer].CurrentMember, [Customer].[Customer]), 
     Iif(
      (IsEmpty(([Item].[ItemNumber].&[011074], [Measures].[Sale Amount])) 
      And IsEmpty(([Item].[ItemNumber].&[011069], [Measures].[Sale Amount])) 
      ) 
      Or IsEmpty([Measures].[Sale Amount]), 
      0 , 1 
     ) 
    ) 
select 
{[Measures].[Sale Amount]} on columns, 
non empty filter([Customer].[Customer].children, [Measures].[BoughtDispenser]) 
    * {[Item].[ItemNumber].members} 
on rows 
from [Sales] 
where [EnteredDate].[Quarter].&[2010-01-01T00:00:00] 
; 

目標是顯示客戶購買的所有物品,他們也購買了兩個分配器(011069和011074)中的任何一個。我可以重新配置這個MDX查詢來使用集合而不是「And」嗎?

我基於計算出的成員對我發現要執行購物籃分析的查詢。我覺得應該有一種方法可以用集合{[Item]。[ItemNumber]來編寫它。 & [011074],[Item]。[ItemNumber]。 &}而不是兩次IsEmpty測試。我試過的所有東西都會讓每個客戶都看到結果。

我的環境是SQL Server Analysis Services 2005.

回答

0

是的,我可以!它只是需要一個略有不同的方法來計算會員:

with member [Measures].[BoughtDispenser] as 
    Sum(Descendants([Customer].[Customer].CurrentMember, [Customer].[Customer]) 
     * {[Item].[ItemNumber].&[011069], [Item].[ItemNumber].&[011074]}, 
     [Measures].[Quantity Shipped] 
    ) 
select 
{[Measures].[Sale Amount]} on columns, 
non empty filter([Customer].[Customer].children, [Measures].[BoughtDispenser]) 
    * {[Item].[ItemNumber].members} 
on rows 
from [Sales] 
where [EnteredDate].[Quarter].&[2010-01-01T00:00:00] 
; 
相關問題