2010-07-14 6 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)을 표시합니다."And"대신 집합을 사용하도록이 MDX 쿼리를 재구성 할 수 있습니까?

바구니 분석을 수행 한 쿼리에서 계산 된 멤버를 기반으로했습니다. 세트 {[Item]. [ItemNumber]와 함께 쓰는 방법이 있어야한다고 생각합니다. & [011074], [Item]. [ItemNumber]. & [011069]} 대신에 두 개의 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] 
; 
관련 문제