2016-04-12 4 views
0

MDX:これらのクエリの違いは何ですか、私は冒険作品データベースを使用しています。MDX:これらの両方のクエリの違いは何ですか

SELECT 
{[Measures].[Internet Sales Amount]} ON COLUMNS, 
NON EMPTY ([Product].[Category].[Category] , 
      [Date].[Calendar Year].[Calendar Year])ON ROWS 
FROM [Adventure Works] 

GO 

SELECT 
{[Measures].[Internet Sales Amount]} ON COLUMNS, 
NON EMPTY ([Product].[Category].[Category] * 
      [Date].[Calendar Year].[Calendar Year])ON ROWS 
FROM [Adventure Works] 

答えて

1

これら2つのスクリプトは同じです。

これは効果的に行にタプルのセットを入れている - あなたは明示的に2番目のスクリプトは、クロススター演算子*経由で参加され、中括弧(...)

SELECT 
    {[Measures].[Internet Sales Amount]} ON COLUMNS 
,NON EMPTY 
    ( //<<start of tuple 
     [Product].[Category].[Category] 
    ,[Date].[Calendar Year].[Calendar Year] 
    ) ON ROWS 
FROM [Adventure Works]; 

を使用してタプルをdefiniedました:

SELECT 
    {[Measures].[Internet Sales Amount]} ON COLUMNS 
,NON EMPTY 
    [Product].[Category].[Category] * [Date].[Calendar Year].[Calendar Year] ON ROWS 
FROM [Adventure Works]; 

crossjoinのアクションを実行すると、一連のタプルが返されます。その結果、同じセルセットになります。

あなたが代わりに星を使用してのCROSSJOIN書くことができます - 星は現代のMDXスクリプトで最も使用される表記ですが:

SELECT 
    {[Measures].[Internet Sales Amount]} ON COLUMNS 
,NON EMPTY 
    CrossJoin 
    (
     [Product].[Category].[Category] 
    ,[Date].[Calendar Year].[Calendar Year] 
    ) ON ROWS 
FROM [Adventure Works]; 
関連する問題