我有一个包含4个字段的数据集(Date,SeccurityName,FiledName,Value)。在我的数据集查询中,我过滤数据以仅在文件名(最后价格)中带来具有特定值的记录。以下是我的数据集
的示例Date SecurityName FiledName Value
5/5/2016 A LastPrice 20.01
5/6/2016 A LastPrice 19.8
5/7/2016 A LastPrice 19.9
5/5/2016 B LastPrice 43.1
5/6/2016 B LastPrice 43.5
5/7/2016 B LastPrice 43.7
在此数据集中,我有过去5年每个工作日的每个安全数据。 在我的报告中,我需要在表中显示安全名称,最后一个值,一个月前的值,一年前的值以及三年前的值
Security name LastPrice 1M 1Year 3Years
A 20.1 18.8 19.01 16.05
如果有人能给我最好的方法来构建这种格式,我将不胜感激。
答案 0 :(得分:0)
我会将您的表分组到安全名称上。这将聚合同一行中具有相同安全名称的所有记录。
然后,对于每个日期/值列,创建 IIF 语句以过滤所需的日期:
=MAX(IIF(Fields!Date.Value = Parameters!LastDate.Value, Fields!Value.Value, NOTHING))
上个月(和其他日期)类似:
=MAX(IIF(Fields!Date.Value = DATEADD("M", -1, Parameters!LastDate.Value), Fields!Value.Value, NOTHING))
MAX用于将NOTHINGS与值聚合。
我认为最好将Last Date作为参数(默认值为昨天?),以便更容易创建表达式,如果有的话,您还可以查看过去的日期需要。