如果不深入研究数据结构,这些真的很难描述,我会尽量保持简短,同时提供尽可能多的信息。
我有一个衡量标准,它是随时间推移的货币价值(现金流),以及日期维度和估值维度。估值有一个日期,该日期对应于第一个现金流量日期。
im after 的要点是第一个值(或者换句话说,与估值日期相对应的现金流值。如果我知道估值日期,很容易将此日期转换为 Date 维度以获取我之后的值:
WITH MEMBER [Measures].[Value at Valuation Date]
AS
(
[Measures].[Value],
[Date].[Date].&[2009-09-30T00:00:00]
)
但是,如果我有一组估价日期(例如,我试图在估价日期获得 3 个月的估价时的价值),这种方法就会失效,因为早期的估价将具有与后估价日期相对应的值。
因此,例如,这个计算成员将返回错误的值:
WITH MEMBER [Measures].[Value at Valuation Date]
AS
(
[Measures].[Value],
{[Valuation.[Valuation Date].&[2009-07-31T00:00:00]:[Valuation].[Valuation Date].&[2009-09-30T00:00:00]}
)
在此示例中,有 3 个估值(7 月底、8 月和 9 月),每个估值都有从相应估值日期起(月底)的每月现金流值。不是为每个估值返回第一个现金流值,而是获得恰好对应于估值日期的所有现金流值的总和。
我希望这足够清楚,可以开始对这个问题进行一些讨论。如果它有用,这是一个 SQL 查询,可以从我的多维数据集暂存数据库中获取正确的数据:
SELECT
v.valuationDate,
SUM(cf.value) as [value at valuation date]
FROM dbo.Valuation v
INNER JOIN dbo.Cashflow cf
ON v.id = cf.valuationId
and v.valuationDate = cf.cashflowDate
GROUP BY v.valuationDate
谢谢