SSRS - 默认参数作为数据库中的最大日期 - MDX

时间:2013-11-04 13:24:05

标签: sql reporting-services parameters mdx

我知道如何在普通查询中将数据库中的最大日期设置为默认参数。在新数据集中我写了这个: ISNULL(MAX(C0_TIME), DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0)) AS END并在默认参数设置中使用它。

但是如何通过使用MDX获得相同的效果?我应该使用/写什么?

感谢您的帮助;)

2 个答案:

答案 0 :(得分:1)

Tail([Czas].[Czas].Members).Item(0).Item(0)

应该会给你上个月,因为它是Czas层次结构的最后一个成员。 Tail返回包含集合元组的子集,第一个Item(0)返回第一个和唯一的元组,第二个返回第一个也是唯一的成员。

如果您想要去年,只需更改尾部的设置,例如: G。使用[Czas].[Czas].[Rok].Members级别Rok:

要获得多维数据集最后一年内的所有月份,您可以使用范围运算符nullTail([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,该参数与另一个数据集连接。这个数据集给我回报了我用来做报告的适当措施。