1

如何编写一个 MDX 语句或查询来选择上个月付款但本月未付款的客户?我有一个在 Microsoft SQL Server Analysis Services R 2 上设计和部署的数据立方体。我有一个客户维度和一个事实表。请帮忙。

4

2 回答 2

0

我假设您有一个 [Time] 维度,以及一个包含客户已付款的值的度量。我认为该Filter()功能将帮助您将一组所有客户减少到您感兴趣的客户。

SELECT {Filter({[Client].[SomeLevel].members}, ([Time].[LastMonth], [Measures].[whatever]) > 0 AND ([Time].[ThisMonth], [Measures].[whatever]) = 0} ON ROWS, {[Measures].[whatever]} ON COLUMNS FROM [CubeName]

您可能正在决定使用什么来代替我写 [Time].[ThisMonth] 的位置 - 请参阅 StackOverflow 上的其他答案以选择“当前”日期。

于 2011-12-15T16:09:10.033 回答
0

首先,您必须确定当前月份和上个月。一种方法是使用函数计算它VBA!Date

因此,如果您的日期以格式存储12/31/2014并假设您有一个度量Payment和一个具有Year-Quarter-Month-Date层次结构的日期维度,那么下面的代码可以帮助您。

WITH MEMBER [Measures].ValueThisMonth AS
(
 [Date].[Year-Quarter-Month-Date].CURRENTMEMBER.PARENT, 
 [Measures].[Payment]
)

MEMBER [Measures].ValueLastMonth AS
(
 [Date].[Year-Quarter-Month-Date].CURRENTMEMBER.PARENT.LAG(1), 
 [Measures].[Payment]
)

SELECT [Client].[Client Name].MEMBERS
HAVING ISEMPTY([Measures].ValueThisMonth)
AND NOT(ISEMPTY([Measures].ValueLastMonth))
ON 0
FROM [Your cube]
WHERE 
StrToMember("[Date].[Year-Quarter-Month-Date].[Date].&[" + FORMAT(VBA![Date](), "MM/dd/yyyy") + "]" + "]")

相反,如果您想从前端传递此“当前”值,请在WHERE子句中使用参数。

于 2015-11-09T14:36:18.420 回答