我知道如何在普通查询中将数据库中的最大日期设置为默认参数。在新数据集中我写了这个:
ISNULL(MAX(C0_TIME), DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0)) AS END
并在默认参数设置中使用它。
但是如何通过使用MDX获得相同的效果?我应该使用/写什么?
感谢您的帮助;)
答案 0 :(得分:1)
Tail([Czas].[Czas].Members).Item(0).Item(0)
应该会给你上个月,因为它是Czas
层次结构的最后一个成员。 Tail
返回包含集合元组的子集,第一个Item(0)
返回第一个和唯一的元组,第二个返回第一个也是唯一的成员。
如果您想要去年,只需更改尾部的设置,例如: G。使用[Czas].[Czas].[Rok].Members
级别Rok
到:
。
要获得多维数据集最后一年内的所有月份,您可以使用范围运算符null
和Tail([Czas].[Czas].[Rok].Members).Item(0).Item(0).FirstChild().FirstChild() : null
作为第二个元素,这意味着“到同一级别的结尾”:< / p>
Rok
会返回去年的所有月份(Tail([Czas].[Czas].[Rok].Members).Item(0).Item(0).FirstChild().FirstChild() : Tail([Czas].[Czas].Members).Item(0).Item(0)
)。当然,您也可以明确说明最终成员:
{{1}}
答案 1 :(得分:0)
我在@FrankPl的帮助下找到了这个解决方案
在我在QueryDesigner中编写的新数据集中:
WITH MEMBER [Measures].[ParameterValue] AS Tail([Czas].[Czas].Members).Item(0).Item(0).UNIQUENAME SELECT {[Measures].[ParameterValue]} ON COLUMNS , [Czas].[Czas].LastChild ON ROWS FROM [PM01]
。
然后我得到了一行ParameterValue
,它给了我去年,季度和月份的名称。我在我的EndData参数中将其用作Default Value
,该参数与另一个数据集连接。这个数据集给我回报了我用来做报告的适当措施。