Anzeigegruppe ohne Daten in Crystal Reports 12
-
27-09-2019 - |
Frage
Ich versuche, meine Daten auf Grund des Alters zu gruppieren. Ich verwende die folgende Datenbank auswählen:
select * from (
select 0 range_start, 11 range_end, '0-10 days' date_description from dual union
select 11, 21, '11-20 days' from dual union
select 21, 31, '21-30 days' from dual union
select 31, 99999, '31+ days' from dual) date_helper
left outer join table
on table.date <= date_helper.range_start*-1 + sysdate
and table.date > date_helper.range_end*-1 + sysdate
Ich mache dann eine Gruppe auf der Grundlage der date_description Spalte. Ich versuche es alle Gruppen zu machen angezeigt werden, auch wenn es keine Aufzeichnungen gibt, die innerhalb dieser Gruppe fallen. Wenn es keine Aufzeichnungen gibt, möchte ich es einen Wert von 0 hat, und die Gruppe weiterhin drucken.
Lösung
Die Erweiterung auf einen Kommentar auf Poweruser Antwort, wenn Sie eine Version von Crystal verwenden, die Sie Ihre eigenen SQL eingeben können (anstelle von Crystal Database Expert verwenden), können Sie eine Unterabfrage einrichten, die als Helfer fungiert Tisch - so etwas wie:
select * from (
select 0 range_start, 11 range_end, '0-10 days' date_description from dual union
select 11, 21, '11-20 days' from dual union
select 21, 31, '21-30 days' from dual union
select 31, 99999, '31+ days' from dual) date_helper
left outer join
(select sysdate-5 mydate from dual union all
select sysdate - 25 from dual) mytable
on mytable.mydate <= date_helper.range_start*-1 + sysdate
and mytable.mydate > date_helper.range_end*-1 + sysdate
(Oracle-Syntax -. Die genaue Syntax der Abfrage wird in Abhängigkeit von der SQL-Dialekt variieren Sie verwenden)
EDIT:. Geändert von SQLServer zu Oracle-Syntax
WEITERE EDIT:. Hinzugefügt einige einfache Beispieldaten
Andere Tipps
(+ 1 für Vollständigkeit Ihrer Frage. Willkommen bei SO!)
Wenn es keine Aufzeichnungen für eine Gruppe sind, dann kann offensichtlich Crystal Reports-Bericht nicht. Ich empfehle eine „Helfer“ Tabelle in der Datenquelle zu schaffen. Hier ist, was ich tun würde, irgendeine Form von SQL verwenden:
-
Machen Sie einen 'Helfer' Tabelle. Es wird 1 Spalte und enthält alle Gruppen angezeigt werden sollen. Wenn die Namen der Gruppen dynamisch sind, können Sie eine Auswahlabfrage oder Make-Tabellenabfrage verwenden.
-
kommen direkt von Ihrem Helfer Tabelle auf Ihre Daten-Tabelle. Senden Sie die kombinierten Daten an Crystal.
-
In Crystal, verwenden Sie den Spalt Helfer Tabelle in Ihren Gruppierungen und agebucket Berechnungen.
Auch in Ihrer Berechnung, sollten Sie eine Zeile hinzu: Else "No age";