用于SQL的MDX列别名

时间:2014-02-10 02:37:16

标签: sql tsql ssas mdx olap-cube

我正在尝试查询我们的SSAS多维数据集并将值返回到SQL视图,以用作基于多维数据集的报表中的参数。

我需要根据日期层次结构为财务季节返回3个值。

这是下面的代码,它返回正确的数据。

WITH 
    MEMBER [CurrentHalf] AS [Date - Master].[Financial Calendar].CURRENTMEMBER.UNIQUENAME
    MEMBER [NextHalf] AS [Date - Master].[Financial Calendar].LEAD(1).UNIQUENAME
    MEMBER [PreviousHalf] AS [Date - Master].[Financial Calendar].LEAD(-1).UNIQUENAME

SELECT {[Date - Master].[Financial Calendar].[Season Half]} ON COLUMNS , 
        {[CurrentHalf],NextHalf,PreviousHalf} ON ROWS
FROM [Sales and Stock]

WHERE  (Filter([Date - Master].[DateKey].Members,[Date - Master].[DateKey].MemberValue = (format(now(),"dd/MM/yyyy"))))

然而,[日期 - 主要]的列名称。[财务日历]。[季节半]返回标题值(例如2014-秋/冬)。

见图:

enter image description here

通常情况下这没问题,因为我将它传递给SQL我需要一个列名来选择关闭。我需要的是将此列重命名为其他内容(例如HalfName)

我试过了

WITH 
    MEMBER [CurrentHalf] AS [Date - Master].[Financial Calendar].CURRENTMEMBER.UNIQUENAME
    MEMBER [NextHalf] AS [Date - Master].[Financial Calendar].LEAD(1).UNIQUENAME
    MEMBER [PreviousHalf] AS [Date - Master].[Financial Calendar].LEAD(-1).UNIQUENAME
    MEMBER [HalfName] as [Date - Master].[Financial Calendar].[Season Half].CURRENTMEMBER.VALUE

SELECT {[HalfName]} ON COLUMNS , 
        {[CurrentHalf],NextHalf,PreviousHalf} ON ROWS
FROM [Sales and Stock]

WHERE  (Filter([Date - Master].[DateKey].Members,[Date - Master].[DateKey].MemberValue = (format(now(),"dd/MM/yyyy"))))

但那仍然无效。

1 个答案:

答案 0 :(得分:3)

当您定义MEMBER个表达式时,它会推断您是在[Measures]维度上创建它们,因此[HalfName]列的全名是[Measures].[HalfName]

另外,我没有看到SQL / T-SQL在哪里,除非你误认为你的MDX for SQL(它们看起来相似,因为它们共享一些语法,但是是非常不同的野兽)。