Ssas 字符串值的MDX IIF评估

Ssas 字符串值的MDX IIF评估,ssas,mdx,olap,Ssas,Mdx,Olap,另一个MDX问题 如本问题所述 我有一个字符串类型的值,它包含一个4位数字。我想计算该字符串的第一个数字或字符 所以我要做的是: IIF(([Kostensoort].[Kosten code] >= 7000 AND [Kostensoort].[Kosten code] < 8000), [Measures].[Inkoop bedrag] + [Measures].[Bank bedrag], [Measures].[Inkoop bedrag]) IIF([Koste

另一个MDX问题

如本问题所述

我有一个字符串类型的值,它包含一个4位数字。我想计算该字符串的第一个数字或字符

所以我要做的是:

IIF(([Kostensoort].[Kosten code] >= 7000 AND [Kostensoort].[Kosten code] < 8000), 
[Measures].[Inkoop bedrag] + [Measures].[Bank bedrag], 
[Measures].[Inkoop bedrag])
IIF([Kostensoort].[Kosten code]>=7000和[Kostensoort].[Kosten code]<8000),
[措施].[Inkoop床单]+[措施].[银行床单],
[措施][Inkoop床单])
根据文件,我怀疑会发生以下情况:

语法:IIF(求值,真表达式,假表达式)

实际发生的情况是,无论我如何编写表达式,求值结果都返回false。我知道这一点,因为值会被打印出来。如果我输入一个静态数字,它也会打印在我的多维数据集中

是的,我知道我把Kosten代码的值写成一个整数,即使它是一个字符串,我也试着用Instr和Left,结果也没有


我有点不知所措,不知该怎么办。欢迎提供任何见解

您需要确保获取维度的当前成员。您的示例可能返回“全部”

一旦你改变了,你就可以使用它了

IIF((StrToValue([Kostensoort].[Kosten code].currentMember)>=7000和[Kostensoort].[Kosten code]<8000),
[措施].[Inkoop床单]+[措施].[银行床单],
[措施][Inkoop床单])

您需要确保正在抓取维度的当前成员。您的示例可能返回“全部”

一旦你改变了,你就可以使用它了

IIF((StrToValue([Kostensoort].[Kosten code].currentMember)>=7000和[Kostensoort].[Kosten code]<8000),
[措施].[Inkoop床单]+[措施].[银行床单],
[措施][Inkoop床单])

您应该将字符串转换为数值;试试这样:

CLng( [Kostensoort].[Kosten code] ) >= 7000

您应该将字符串转换为数值;试试这样:

CLng( [Kostensoort].[Kosten code] ) >= 7000

这对我来说似乎是合乎逻辑的,但是当我运行这个时,IIF语句将永远不会变为真。我还注意到im quering字段有一个双倍值,所以我尝试了7000.0,但也不起作用。我使用了这个:IIF(STRTOVALUE([Kostensoort].[Kosten code].CURRENTMEMBER)>=7000.0,//表达式1,//true 0//false我将您的问题标记为答案,因为它帮助我找到了答案:if is use(STRTOVALUE([Kostensoort].[Kosten code].CURRENTMEMBER.Name)我得到了我需要的值。我不知道为什么我需要使用Name而不是value,但是IIF语句现在返回了我希望它返回的值!谢谢你的帮助!这对我来说似乎是合乎逻辑的,但是当我运行它时,IIF语句将永远不会为真。我还注意到im query字段有一个双值,所以我尝试了7000.0,而不是w它也不起作用。我使用了这个:IIF(STRTOVALUE([Kostensoort].[Kosten code].CURRENTMEMBER)>=7000.0,//表达式1,//true 0//false我将你的问题标记为答案,因为它帮助我找到了答案:if is use(STRTOVALUE([Kostensoort].[Kosten code].[Kosten code].CURRENTMEMBER.Name)我得到了我需要的值。我不知道为什么我需要使用名称而不是值,但是IIF语句现在返回了我期望它返回的值!所以谢谢你的帮助!正如另一个答案中所述,这也不起作用。我尝试使用它,尽管它出现在msdn的mdx参考指南中。我也注意到,如果我尝试获取<代码>[Kostensoort]。[Kosten代码].currentMember作为输出,它返回了一个空单元格,就像当前成员没有值一样。但是当我鼠标悬停在上面时,我看到当前成员有一个值。正如另一个答案中所述,这也不起作用。我尝试使用它,尽管它出现在msdn上的mdx参考指南中。我还注意到,如果我尝试获取
[Kostensoort].[Kosten code].currentMember
作为输出,它返回一个空单元格,就像当前成员没有值一样。但是当我将鼠标悬停在上面时,我看到当前成员有一个值
CLng( [Kostensoort].[Kosten code] ) >= 7000