2016-08-10 28 views
2

我試圖找出哪一年有最高的經銷商銷售跨州每個省。我正在使用Adventure Works DW 2008 R2數據庫。在一些屬性的TOPCOUNT查詢不正確的結果

這裏是我有查詢 -

SELECT { [Reseller Sales Amount] } ON COLUMNS, 
{ 
    Generate (
    [Geography].[Geography].[Country].Members, 
    TopCount (
     Order (
     Descendants ( 
      [Geography].[Geography].CurrentMember 
     , [Geography].[Geography].[State-Province] 
     ) 
     *[Date].[Calendar].[Calendar Year].Members, 
     [Reseller Sales Amount], 
     DESC 
    ), 
     1 
    ) 
) 
} ON ROWS 
FROM [Adventure Works] 

當談到法國它的顯示(空)的結果集。另外爲什麼不列出所有的州 - 省,但只選擇其中的幾個?是否有可能讓國家與結果一起?當我嘗試另一個交叉連接時,我收到錯誤,說地理層次結構已經存在。

+0

(上)很好地提出了問題,使用我們都可以玩的立方體。 – whytheq

回答

1

要擺脫null,您可以使用BDESC而不是DESC。額外B意味着所有自然等級秩序將被打破

SELECT { [Reseller Sales Amount] } ON COLUMNS, 
{ 
    Generate (
    [Geography].[Geography].[Country].Members, 
    TopCount (
     Order (
     Descendants ( 
      [Geography].[Geography].CurrentMember 
     , [Geography].[Geography].[State-Province] 
     ) 
     *[Date].[Calendar].[Calendar Year].Members, 
     [Reseller Sales Amount], 
     BDESC //<<< 
    ), 
     1 
    ) 
) 
} ON ROWS 
FROM [Adventure Works]; 

要在國家增加,並避免您看到使用未使用的屬性層次[Geography].[Country],而不是用戶層次結構[Geography].[Geography],你已經對1的錯誤軸:

SELECT 
    {[Reseller Sales Amount]} ON COLUMNS 
,{ 
    Generate 
    (
     [Geography].[Geography].[Country].MEMBERS 
    ,TopCount 
     (
     Order 
     (
      [Geography].[Country].[Country]* 
      Descendants 
      (
       [Geography].[Geography].CurrentMember 
      ,[Geography].[Geography].[State-Province] 
      )* 
      [Date].[Calendar].[Calendar Year].MEMBERS 
     ,[Reseller Sales Amount] 
     ,bDESC 
     ) 
     ,1 
    ) 
    ) 
    } ON ROWS 
FROM [Adventure Works]; 

結果如下:

enter image description here

+0

謝謝whyth的答案和清楚的解釋。我只是想知道是不是可以使用相同的用戶層次結構並獲得結果?事情在我們擁有的立方體中,非用戶定義的屬性已被隱藏。我需要使用一個子多維數據集來查詢嗎?我對MDX不太瞭解。 – VKarthik

+0

@VKarthik您不能在select子句中多次使用同一層次結構 - 這是mdx的規則。過去我遇到過類似的問題 - 我們的多維數據集設計師隱藏了屬性層次結構,因爲他認爲它是「更整潔」的 - 現在它們被隱藏起來並放置在每個維度中的「屬性」文件夾中,因爲它們非常有用。在AdvWrks中,它們是可見的,可見的是微軟建議的結構。 – whytheq

+0

再次感謝您的更新。我也會隱藏這些屬性。 – VKarthik

0

我們將探討在各個層次上的頂級過濾器的通用選項實現。

可以爲每個級別設置TOP規則。

它用於詳細分析數據(展開,向下鑽取)。

集合體基於TOP形成。

TOP-filters on Levels

設置排序順序都行,只要數據在 最透視表進行排序。

SELECT 
    { [Measures].[Reseller Sales Amount] } 
    DIMENSION PROPERTIES PARENT_UNIQUE_NAME , HIERARCHY_UNIQUE_NAME , CUSTOM_ROLLUP , UNARY_OPERATOR , KEY0 ON 0 
, ORDER 
    (HIERARCHIZE 
    (HIERARCHIZE ([Geography].[Geography].Levels (0).Members) 
    ) 
    , ([Measures].[Reseller Sales Amount]) 
    , BDESC 
) 
    DIMENSION PROPERTIES PARENT_UNIQUE_NAME , HIERARCHY_UNIQUE_NAME , CUSTOM_ROLLUP , UNARY_OPERATOR , KEY0 ON 1 
FROM 
(SELECT 
    { Generate 
     ([Geography].[Geography].Levels (3).Members 
     , TopCount 
     (Filter 
      ([Geography].[Geography].CurrentMember.Children 
      , NOT IsEmpty ([Measures].[Reseller Sales Amount]) 
     ) 
     , 3 
     , [Measures].[Reseller Sales Amount] 
     ) 
    ) 
    } ON COLUMNS 
    FROM 
    (SELECT 
     { Generate 
     ([Geography].[Geography].Levels (2).Members 
     , TopCount 
      (Filter 
      ([Geography].[Geography].CurrentMember.Children 
      , NOT IsEmpty ([Measures].[Reseller Sales Amount]) 
      ) 
      , 3 
      , [Measures].[Reseller Sales Amount] 
     ) 
     ) 
     } ON COLUMNS 
    FROM 
    (SELECT 
     { Generate 
      ([Geography].[Geography].Levels (1).Members 
      , TopCount 
      (Filter 
       ([Geography].[Geography].CurrentMember.Children 
       , NOT IsEmpty ([Measures].[Reseller Sales Amount]) 
      ) 
      , 3 
      , [Measures].[Reseller Sales Amount] 
      ) 
     ) 
     } ON COLUMNS 
     FROM 
     (SELECT 
      { Generate 
      ([Geography].[Geography].Levels (0).Members 
      , TopCount 
       (Filter 
       ([Geography].[Geography].CurrentMember.Children 
       , NOT IsEmpty ([Measures].[Reseller Sales Amount]) 
       ) 
       , 3 
       , [Measures].[Reseller Sales Amount] 
      ) 
      ) 
      } ON COLUMNS 
     FROM 
     (SELECT 
      { [Geography].[Geography].Levels (0).Members } ON COLUMNS 
      FROM [Adventure Works] 
     ) 
    ) 
    ) 
) 
) 
CELL PROPERTIES BACK_COLOR , CELL_ORDINAL , FORE_COLOR , FONT_NAME , FONT_SIZE , FONT_FLAGS , FORMAT_STRING , VALUE , FORMATTED_VALUE , UPDATEABLE , ACTION_TYPE 
+0

用戶沒有使用子查詢 - 爲什麼像這樣過度複雜查詢? – whytheq

+0

查詢非常簡單。但是在報告的實際操作中,對數據等使用過濾器,並且使用子查詢很容易實現。我們幾乎總是使用子選擇。在該示例中,您可以使用TOP導航數據透視表中的級別。 –