2017-05-08 86 views
0

我有一个包含4个字段(Date,SeccurityName,FiledName,Value)的数据集。在我的数据集查询中,我过滤数据以仅将带有特定值的记录带入提交的名称(最新价格)。以下是我的数据集的示例SSRS报告表达式设置

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

我会将您的表分组在安全名称上。这将在同一行中汇总具有相同安全名称的所有记录。

然后对于每个日期/值列,创建一个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作为一个参数(默认为昨天?),以便更容易地创建表达式,并且如果您有过时日期,您也可以查看过去的日期需求。