2017-03-20 3 views
1

Ich verwende SSRS 3.0 und SharePoint 2013. Ich sortiere einen SSRS-Bericht für ein Datumsfeld. Ich habe Ausdrücke verwendet, um einige der Daten als alphanumerisch (dh "N/A", "laufend") zu verbinden. Der Kunde möchte die Zeilen nach Datum sortiert mit den ältesten Daten zuerst und dem "N/A" und dem "Laufenden" Termine dauern. Die Sortierfunktion sortiert zuerst die Alphas und dann die anderen Zeilen, die Datumsangaben enthalten. Wie bekomme ich den Sortierausdruck, um die Daten zu sortieren ältesten zu neuesten und dann sortieren die "N/A" und "Laufende" Termine zuletzt? Vielen Dank!SSRS-Sortierung für ein Datumsfeld, das alphanumerische Zeichen enthält

Antwort

0

Sie einen Ausdruck berechnete Art entweder in der SQL erstellen oder in der Bericht. Ich werde ein Beispiel dafür geben, wie Sie das in dem Bericht tun, da Sie das gefragt haben.

Zuerst gehen Sie in Ihre Gruppeneigenschaften und dann auf die Registerkarte Sortierung. Wir fügen zwei Sortierbedingungen hinzu. Klicken Sie auf die Schaltfläche "Hinzufügen" und dann auf die Expression-Schaltfläche.

Für die erste Bedingung werden wir die Daten und den Text trennen. So würde der Ausdruck so etwas wie diese:

=IIf(IsDate(Fields!MyColumn.Value), 1, 2) 

eine zweite Sortierbedingung hinzufügen und legen Sie es Ihre Spalt sortieren in absteigender Reihenfolge. Dies wird die Daten zuerst und den Text danach setzen.

+0

Super !!! hat wie ein Zauber gearbeitet - vielen Dank! –

+0

@KimFarrell froh zu helfen. Bitte markieren Sie diese als beantwortet. – StevenWhite

+0

fertig - danke nochmal! –

0

Trennen Sie die Ergebnismenge in zwei Teile, einen für das reine Datumsergebnis und den Rest für 'fortlaufend' & 'N/A'. Kombiniere sie mit UNION.

Welches ist die Abfrage wie folgt sein:

Select col1, col2 
From table 
where ... --condition to filter out those rows with real date 
order by date 

UNION 

Select col1, case when col2 ... then 'Ongoing' when col2 ... then 'N/A' 
From table 
where ... --condition to filter out those rows need to be replace with characters 
--not necessary using `order by for this part` 
0

Sie können einfach die ORDER BY-Klausel verwenden, wie folgt:

SELECT MyDate FROM MyDateTable 
ORDER BY 
    CASE WHEN MyDate IN ('n/a','Ongoing') THEN 1 ELSE 0 END, 
    MyDate 
Verwandte Themen