合并 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];
我想在一个 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];