合并 2 个 MDX 查询

Merge 2 MDX queries

我想在一个 table 中显示这 2 个查询的结果。

SELECT
{[Measures].[Udzial Wieznia w Aktywnosci Count]} ON COLUMNS,
{[Aktywnosc].[Id Wiezienia].Members} ON ROWS
FROM [Wiezienia HD2]
WHERE [Udzial Wieznia w Aktywnosci].[Id Ucieczki].[2] : [Udzial Wieznia w Aktywnosci].[Id Ucieczki].[101]

SELECT
{[Measures].[Udzial Wieznia w Aktywnosci Count]} ON COLUMNS,
{[Aktywnosc].[Id Wiezienia].Members} ON ROWS
FROM [Wiezienia HD2]

第一个显示每个监狱中有多少人越狱,第二个显示每个监狱中有多少人。

WITH MEMBER [Measures].x AS 
    AGGREGATE( [Udzial Wieznia w Aktywnosci].[Id Ucieczki].[2] 
             : [Udzial Wieznia w Aktywnosci].[Id Ucieczki].[101]
            , [Measures].[Udzial Wieznia w Aktywnosci Count] )

SELECT { [Measures].[Udzial Wieznia w Aktywnosci Count]
, Measures.x
    } ON COLUMNS
, [Aktywnosc].[Id Wiezienia].Members ON ROWS
FROM [Wiezienia HD2]

如果 AGGREGATE 不起作用,请尝试 SUM。顺便说一下,请注意在 2 到 101 的属性上将 OrderBy 设置为 KeyColumn(应该是数字数据类型),否则您的范围将无法正常工作。

编辑:也许我不正确的第一个答案是将聚合内联,因为我在考虑这样一个事实,即如果您只有一个层次结构成员要与元组一起使用,则元组集表达式的行为有点像 SUM。例如,如果您为范围 2 到 101 创建了维度属性,您可以使用如下表达式:

( [Udzial Wieznia w Aktywnosci].[new attribute name].[2_to_101]
  , [Measures].[Udzial Wieznia w Aktywnosci Count] )

但是你需要确保元组的维数在轴上的所有成员中都是相同的,例如:

SELECT { ( [Udzial Wieznia w Aktywnosci].[new attribute name].[2_to_101]
  , [Measures].[Udzial Wieznia w Aktywnosci Count] )
    ( [Udzial Wieznia w Aktywnosci].[new attribute name].[All]
      , [Measures].[Udzial Wieznia w Aktywnosci Count] )
    } ON COLUMNS
, [Aktywnosc].[Id Wiezienia].Members ON ROWS
FROM [Wiezienia HD2] 

这是 Aaron West 移植到 AdvWrks 的建议:

SELECT 
  {
    [Measures].[Internet Sales Amount]
   ,Aggregate
    (
        [Date].[Calendar].[Calendar Year].&[2006]
      : [![enter image description here][1]][1]
        [Date].[Calendar].[Calendar Year].&[2007]
     ,[Measures].[Internet Sales Amount]
    )
  } ON 0
 ,[Product].[Category].[Category] ON 1
FROM [Adventure Works];

正如 Greg Galloway 所指出的,它的错误是:

Query (2, 3) The function expects a tuple set expression for the 2 argument. A string or numeric expression was used.

如果我们将计算移动到 WITH 语句:

WITH 
  MEMBER [Measures].[SalesIn2006/2007] AS 
    Aggregate
    (
        [Date].[Calendar].[Calendar Year].&[2006]
      : 
        [Date].[Calendar].[Calendar Year].&[2007]
     ,[Measures].[Internet Sales Amount]
    ) 
SELECT 
  {
    [Measures].[Internet Sales Amount]
   ,[Measures].[SalesIn2006/2007]
  } ON 0
 ,[Product].[Category].[Category] ON 1
FROM [Adventure Works];

我们现在得到一个结果:

所以相对于你的立方体,它可能看起来有点像这样:

WITH 
  MEMBER [Measures].[Count freeAtLast] AS 
    Aggregate
    (
        [Udzial Wieznia w Aktywnosci].[Id Ucieczki].[2]
      : 
        [Udzial Wieznia w Aktywnosci].[Id Ucieczki].[101]
     ,[Measures].[Udzial Wieznia w Aktywnosci Count]
    ) 
SELECT 
  {
    [Measures].[Udzial Wieznia w Aktywnosci Count]
   ,[Measures].[Count freeAtLast]
  } ON 0
 ,[Aktywnosc].[Id Wiezienia].MEMBERS ON 1
FROM [Wiezienia HD2];