我有两个MDX查询。
首先查询:
SELECT {[Measures].[Actual]} ON 0,
{ DESCENDANTS([Dim Office].[Offices].[Office Level 02].ALLMEMBERS)
*DESCENDANTS([Dim Business Line].[Business Lines].[Business Line Level 02].ALLMEMBERS)
*{[Dim Date].[Fiscal Dim Date Calculations].&[Current Dim Date]}} ON 1
FROM
[BI]
第二个:
SELECT {[Measures].[Actual]} ON 0,
{ DESCENDANTS([Dim Office].[Offices].[Office Level 02].ALLMEMBERS)
*[Dim PNL].[PNL].&[6]
*{[Dim Date].[Fiscal Dim Date Calculations].&[Current Dim Date]}} ON 1
FROM
[BI]
如何获得两个查询的并集?
答案 0 :(得分:1)
试试这个,
SET1 as
{ DESCENDANTS([Dim Office].[Offices].[Office Level 02].ALLMEMBERS)
*DESCENDANTS([Dim Business Line].[Business Lines].[Business Line Level 02].ALLMEMBERS)
*{[Dim Date].[Fiscal Dim Date Calculations].&[Current Dim Date]}}
SET2 as
{ DESCENDANTS([Dim Office].[Offices].[Office Level 02].ALLMEMBERS)
*[Dim PNL].[PNL].&[6]
*{[Dim Date].[Fiscal Dim Date Calculations].&[Current Dim Date]}}
SET3 as
Union(SET1,SET2)
select {[Measures].[Actual]} ON 0,
SET3 on 1
From [BI]
答案 1 :(得分:0)
如果您的意思是想要连接两个查询的结果,这在MDX中是不可能的。 MDX是一种强类型语言,报表必须具有与所有轴上的层次结构相同的结构。并且您的行轴不同:第一个使用[Dim Business Line].[Business Lines]
作为第二个层次结构,第二个使用[Dim PNL].[PNL]
作为第二个层次结构。
您应该在正在使用的客户端工具中连接两个结果。
答案 2 :(得分:0)
有一种解决方法,你可以使用T-SQL EXEC语句来做这样的事情。请检查我的答案here,以找到从SQL服务器查询AS服务器的方法。简而言之,您只需要两个临时表:
declare @tsqlquery1 varchar(1000) = ...
declare @mdxquery1 varchar(1000) = ''' SELECT {[Measures].[Actual]} ON 0,
{ DESCENDANTS([Dim Office].[Offices].[Office Level 02].ALLMEMBERS)
*DESCENDANTS([Dim Business Line].[Business Lines].[Business Line Level 02].ALLMEMBERS)
*{[Dim Date].[Fiscal Dim Date Calculations].&[Current Dim Date]}} ON 1
FROM
[BI])'''' + ''' + ')'
-- same for second mdx
...
-- add temp tables
create table #t1 (...)
create table #t2 (...)
-- insert MDX results into temp table1
insert into #t1
EXEC(@tsqlquery1 + @mdxquery1)
-- insert MDX results into temp table2
insert into #t2
EXEC(@tsqlquery2 + @mdxquery2)
-- get union
select * from #t1 union select * from #t2