使用OR的多个过滤器的MDX查询

时间:2014-02-06 09:25:49

标签: ssas mdx

我有以下MDX查询,我被要求扩展:

    SELECT {} ON COLUMNS,
CROSSJOIN(
    [Waterbody].[Waterbody Code].[Waterbody Code],
    [Waterbody].[Waterbody Name].[Waterbody Name],
    [Waterbody].[Waterbody Type].[Waterbody Type],
    filter([Waterbody].[Waterbody Full Name].allmembers,instr([Waterbody].[Waterbody Full Name].currentmember.member_caption,'Test Waterbody Name')>0)
    )  ON ROWS FROM [Waterbody Data]

还有另一个名为“Waterbody Name”的列,我需要返回给定值为“Waterbody Full Name”或“Waterbody Name”的行。

我在SQL上很方便,但这个MDX对我来说是全新的。昨天我花了很大一部分时间尝试不同的事情但却无处可去。我真的很感激一些帮助。

由于 约翰

1 个答案:

答案 0 :(得分:1)

只需将要返回的成员放入一组(用花括号标注),就是这样。无需Filter

SELECT {} ON COLUMNS,
CROSSJOIN(
    [Waterbody].[Waterbody Code].[Waterbody Code],
    [Waterbody].[Waterbody Name].[Waterbody Name],
    [Waterbody].[Waterbody Type].[Waterbody Type],
    { 
      [Waterbody].[Waterbody Full Name].[Waterbody Full Name],
      [Waterbody].[Waterbody Full Name].[Waterbody Name]
    }
    )  ON ROWS
FROM [Waterbody Data]

如果您使用SQL Server Management Studio中的MDX窗口编辑查询,则可以将成员从左侧列表拖到脚本中。在这种情况下,根据多维数据集配置的详细信息,生成的语法可能会略有不同 - 比如包含&符号,但两者都应该有效。但是,使用MDX窗口的此功能可以避免拼写错误。