Ssas 在MDX中,如何查找每个月最后一天的在途数量?

Ssas 在MDX中,如何查找每个月最后一天的在途数量?,ssas,mdx,Ssas,Mdx,我正在使用MDX和Microsoft SQL Server 2008分析服务。我有一个具有以下维度的装运多维数据集: * Measures: Quantity * Time: Year/Month/Day * Ship Date: Year/Month/Day * Receipt Date: Year/Month/Day 我想知道每个月最后一天的运输数量。我该怎么做?在SQL中,应该是这样的: SELECT A.[Month], SUM(B.[Quantity]) AS [In Trans

我正在使用MDX和Microsoft SQL Server 2008分析服务。我有一个具有以下维度的装运多维数据集:

* Measures: Quantity
* Time: Year/Month/Day
* Ship Date: Year/Month/Day
* Receipt Date: Year/Month/Day
我想知道每个月最后一天的运输数量。我该怎么做?在SQL中,应该是这样的:

SELECT
  A.[Month], SUM(B.[Quantity]) AS [In Transit]
FROM
  ( SELECT [Month], MAX([Day]) AS [End of Month] FROM [Time] GROUP BY [Month] ) A
  CROSS JOIN
  ( SELECT [Quantity], [Ship Date], [Receipt Date] FROM [Shipments] ) B
WHERE
  B.[Ship Date] <= A.[End of Month]
  AND B.[Receipt Date] > A.[End of Month]
GROUP BY
  A.[Month]

以下查询在AdventureWorks中运行,即。E语法正确。AdventureWorks的结构与您的多维数据集非常相似。多维数据集的主要变化是度量值、层次结构和多维数据集名称的调整;由于您没有详细说明这些,因此我保留了查询,以便它在AdventureWorks中运行:

with member [Measures].[In Transit] as
     Sum((null : LinkMember([Date].[Calendar].CurrentMember, [Ship Date].[Calendar]))
          *
         (LinkMember([Date].[Calendar].CurrentMember.NextMember, [Delivery Date].[Calendar]) : null),
         [Measures].[Internet Sales Amount]
        )
select { [Measures].[In Transit] }
       on columns,
       [Date].[Calendar].[Month].Members
       on rows
from [Adventure Works]

LinkMember从具有相同结构的层次结构中获取相应的成员,通常是基于相同维度表的角色扮演维度。和null:And:null构造分别返回同一级别的所有成员集,或从开始到结束的所有成员集。

发货日期是完整的日期维度,其中不缺少日期吗?到目前为止,您尝试了什么MDX查询?