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.

War es hilfreich?

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:

  1. 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.

  2. kommen direkt von Ihrem Helfer Tabelle auf Ihre Daten-Tabelle. Senden Sie die kombinierten Daten an Crystal.

  3. 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";

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top