2017-05-08 2 views
0

Ich habe ein Dataset mit 4 Feldern (Datum, SeccurityName, FiledName, Value). In meiner Datasetabfrage filtere ich die Daten, um nur Datensätze mit einem bestimmten Wert in den Feldnamen (Letzter Preis) zu bringen. Im Folgenden finden Sie ein Beispiel meines DatasetsSSRS Bericht Ausdruck Setup

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 

In diesem Datensatz habe ich Daten für jedes Wertpapier für jeden Geschäftstag für die letzten 5 Jahre. In meinem Bericht muß ich vor in einer Tabelle Die Sicherheitsname, der letzte Wert, der Wert von einem Monat anzuzeigen, wird der Wert von vor einem Jahr, und der Wert von drei

Security name  LastPrice  1M   1Year    3Years 
    A     20.1  18.8   19.01    16.05 

vor Jahren würde ich es begrüßen, wenn jemand kann mir den besten Weg geben, dieses Format zu erstellen.

Antwort

0

Ich würde Ihre Tabelle auf den Sicherheitsnamen gruppieren. Dies würde alle Datensätze mit demselben Sicherheitsnamen in derselben Zeile aggregieren.

Dann für jedes Datum/Wertspalte, erstellen Sie eine IIF Erklärung für das Datum zu filtern, die Sie wollen:

=MAX(IIF(Fields!Date.Value = Parameters!LastDate.Value, Fields!Value.Value, NOTHING)) 

Der letzte Monat (und andere Termine) wäre ähnlich:

=MAX(IIF(Fields!Date.Value = DATEADD("M", -1, Parameters!LastDate.Value), Fields!Value.Value, NOTHING)) 

Der MAX wird verwendet, um die NICHTS mit den Werten zu aggregieren.

Ich denke, es wäre am besten, das letzte Datum als Parameter (mit einem Standard von gestern?) Zu haben, um die Ausdrücke einfacher zu erstellen, und Sie hätten auch die Möglichkeit, vergangene Daten zu sehen das Bedürfnis.