如何编写MDX语句或查询来选择上个月付款但尚未支付此(当月)月的客户?我有一个在Microsoft SQL Server Analysis Services R 2上设计和部署的数据立方体。我有一个客户维度和一个事实表。 请帮忙。
答案 0 :(得分:0)
我假设您有一个[时间]维度,以及一个包含客户已付款的值的度量。我认为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]
你麻烦可能决定用什么代替我写的地方[时间]。[ThisMonth] - 在StackOverflow上查看其他答案,以选择“当前”日期。
答案 1 :(得分:0)
首先,您必须确定当前月份和上个月。一种方法是使用VBA!Date
函数计算它。
因此,如果您的日期以[{1}}格式存储,并假设您有一个度量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") + "]" + "]")
子句中的参数。