1

我在报告中有以下 MDX 查询:

select 
({ [Measures].[Total]})   on columns,
non empty
[Dim1].[h1].allmembers
* [Dim1].[h2].allmembers
* [Dim1].[h3].allmembers
* [1 Date - Loss Date].[Date].[Year].allmembers
having [Measures].Total>100000 on rows
from [Monthly Summary]
where ([1 Date - Month End].[Month End Date].[Month].&[20120331])

这是选择 3 月份 Total 值超过 100k 的行。如何在 3 月或 2 月选择 Total value 超过 100k 的行,这意味着从上述查询中获取结果加上上个月超过 100k的本月值的结果?

现在,我在 SSRS 的两个数据集中执行此操作,并在另一个数据集中进行连接和查找,并从报告参数中读取月份(Where 子句);这是关闭螺母不正确。

更新:天气 3 月份的 [Total] 值超过 100k 或 2 月份的 [Total] 值是,我需要在查询结果中查看 March Total Value(在第二种情况下可能小于 100k)

4

2 回答 2

1

如果我理解您的要求,您需要 where 子句中的月份或 where 子句中的前一个月的行,其总数超过 100K。where 子句将影响您为 Total 度量看到的值,因此如果您也想查看上个月的值,则不能将其留在 where 子句中。要查看该行是 3 月还是 2 月,您必须将其包含在如下行中:

select 
({ [Measures].[Total]})   on columns,
non empty
[Dim1].[h1].allmembers
* [Dim1].[h2].allmembers
* [Dim1].[h3].allmembers
* [1 Date - Loss Date].[Date].[Year].allmembers
* {[1 Date - Month End].[Month End Date].[Month].&[20120228],[1 Date - Month End].[Month End Date].[Month].&[20120331]}
having [Measures].Total>100000 on rows
from [Monthly Summary]

您是否从参数中获取月份,因此正在寻找获取上个月的通用方法?如果是这样,您可以执行以下操作:

select 
    ({ [Measures].[Total]})   on columns,
    non empty
    [Dim1].[h1].allmembers
    * [Dim1].[h2].allmembers
    * [Dim1].[h3].allmembers
    * [1 Date - Loss Date].[Date].[Year].allmembers
    * {[1 Date - Month End].[Month End Date].[Month].&[20120331].PrevMember,[1 Date - Month End].[Month End Date].[Month].&[20120331]}
    having [Measures].Total>100000 on rows
    from [Monthly Summary]

更新:要在当前月份或上个月大于 100,000 时获取当前值 - 无论当前月份的总数如何,您都可以执行以下操作:

select 
    ({ [Measures].[Total]})   on columns,
    non empty
    [Dim1].[h1].allmembers
    * [Dim1].[h2].allmembers
    * [Dim1].[h3].allmembers
    * [1 Date - Loss Date].[Date].[Year].allmembers

    having [Measures].Total>100000 or ([1 Date - Month End].[Month End Date].[Month].&[20120331].PrevMember,  [Measures].Total>100000) on rows
    from [Monthly Summary] 
    where [1 Date - Month End].[Month End Date].[Month].&[20120331]

在 HAVING 子句中,WHERE 子句与度量相结合,以过滤掉任何不符合指定月份条件的行:2012 年 3 月。但它不会为 OR 之后的表达式执行此操作,因为具有 PrevMember 的元组会覆盖 WHERE 子句。

于 2012-08-22T05:27:55.343 回答
1

你可以使用这样的东西:

SELECT ({ [Measures].[Total]}) ON COLUMNS,
[Dim1].[h1].allmembers
* [Dim1].[h2].allmembers
* [Dim1].[h3].allmembers
* [1 Date - Loss Date].[Date].[Year].allmembers
HAVING [Measures].[Total] > 100000
OR ([Measures].[Total], [1 Date - Month End].[Month End Date].[Month].&[20120228]) >100000 
ON ROWS
FROM [Monthly Summary]
WHERE ([1 Date - Month End].[Month End Date].[Month].&[20120331])

您不需要行上的非空,因为null < 100000

于 2012-08-22T07:57:10.903 回答