2013-08-28 30 views
1

我使用SQL Server 2008 R2,並使用SSRS,並使用Adventure Work DataBase。MDX查詢中的相交和topcount以及order函數

我寫這篇文章MDX查詢獲得10個城市,均在這兩年2003前十名,2004年

with 
set [Best Cities in CY 2003/2004] as 
    intersect(
     order(
      topcount(
       [Customer].[Customer Geography].[City], 
       10, 
       (
        [Measures].[Internet Sales Amount], 
        [Date].[Calendar].[Calendar Year].[CY 2003] 
       ) 
      ), 
      [Measures].[Internet Sales Amount], 
      bdesc 
     ), 
     order(
      topcount(
       [Customer].[Customer Geography].[City], 
       10, 
       (
        [Measures].[Internet Sales Amount], 
        [Date].[Calendar].[Calendar Year].[CY 2004] 
       ) 
      ), 
      [Measures].[Internet Sales Amount], 
      bdesc 
     ) 
    ) 
Select [Measures].[Internet Sales Amount] on columns, 
     [Best Cities in CY 2003/2004] on rows 
From [Adventure Works] 
Where 
{ 
    [Date].[Calendar].[Calendar Year].[CY 2003], 
    [Date].[Calendar].[Calendar Year].[CY 2004] 
} 

但我想獲得城市的名單,互聯網銷售相比下降了35%去年和同年城市排在前十位的城市之列。

我怎麼能得到這個結果?

+0

你的意思是:在2004年的前10個城市,你想擁有那些35%以上的銷售額的下降?或者你是否希望看到2004年銷售額下降35%或更多的城市或者在銷售額前10名以內的城市? – FrankPl

+0

我想得到2004年和2003年銷售量最好的10個城市,2003年和2002年這個城市的銷售量下降了35%甚至更多? –

回答

3

你會使用這個Filter

with 
set [Best Cities in CY 2003/2004] as 
    filter(
     intersect(
      topcount(
       [Customer].[Customer Geography].[City], 
       10, 
       (
        [Measures].[Internet Sales Amount], 
        [Date].[Calendar].[Calendar Year].[CY 2003] 
       ) 
      ), 
      topcount(
       [Customer].[Customer Geography].[City], 
       10, 
       (
        [Measures].[Internet Sales Amount], 
        [Date].[Calendar].[Calendar Year].[CY 2004] 
       ) 
      ) 
     ), 
     ([Measures].[Internet Sales Amount], [Date].[Calendar].[Calendar Year].[CY 2004]) 
     /
     ([Measures].[Internet Sales Amount], [Date].[Calendar].[Calendar Year].[CY 2003]) 
     - 1.0 
     < -0.35 
    ) 
Select [Measures].[Internet Sales Amount] on columns, 
     [Best Cities in CY 2003/2004] on rows 
From [Adventure Works] 
Where 
{ 
    [Date].[Calendar].[Calendar Year].[CY 2003], 
    [Date].[Calendar].[Calendar Year].[CY 2004] 
}