我使用以下MDX计算来获取每天的股票价值:
SUM({NULL:[Date].[Calendar Hierarchy].CURRENTMEMBER} * [Measures].[Qty])
然而,这给了我以下结果
Date QtyOnHand
2015年1月1日10
2015年4月1日15
2015年5月1日16
标记未显示日期2/1/2015和3/1/2015,因为它们上没有任何交易。 我希望这些显示得到以下结果:
Date QtyOnHand
2015年1月1日10
2015年2月1日10
2015年3月1日10
2015年4月1日15
2015年5月1日16
如何将MDX语句调整为此?
答案 0 :(得分:0)
IsEmpty
有帮助吗?
SUM(
{NULL:[Date].[Calendar Hierarchy].CURRENTMEMBER}
* IIF(
IsEmpty([Measures].[Qty])
,0
,[Measures].[Qty]
)
)
如果它有帮助那么它将无助于表现。
我已经测试了上述内容,并且不确定为什么在Sum
内进行交叉连接 - 更多标准就是使用第二个参数。
此AdvWrks
脚本是您的方案的一个示例,即数据中存在空白:
SELECT
{[Measures].[Internet Sales Amount]} ON 0
,{
[Date].[Calendar].[Date].&[20050801]
:
[Date].[Calendar].[Date].&[20051201]
} ON 1
FROM [Adventure Works];
以下是使用IsEmpty
(带IIF
)的查询:
WITH
MEMBER [Measures].[roll] AS
Sum
(
{[Date].[Calendar].[Date].&[20050801] : [Date].[Calendar].CurrentMember}
,IIF
(
IsEmpty([Measures].[Internet Sales Amount])
,0
,[Measures].[Internet Sales Amount]
)
)
SELECT
{[Measures].[Internet Sales Amount],[Measures].[roll]} ON 0
,{
[Date].[Calendar].[Date].&[20050801]
:
[Date].[Calendar].[Date].&[20051201]
} ON 1
FROM [Adventure Works];
部分结果如下:
所以在你的场景中我认为这非常相似:
SUM(
{NULL:[Date].[Calendar Hierarchy].CURRENTMEMBER}
, IIF(
IsEmpty([Measures].[Qty])
,0
,[Measures].[Qty]
)
)