2016-09-16 2 views
1

Mit Crystal 2013, meine Berichtsgruppen von customer_id. Die Details sind die Zeiten (datetime), die der Kunde besucht hat. Ich habe herausgefunden, wie ich mindestens 6 Besuche feststellen kann, aber ich möchte überprüfen, ob diese 6 Besuche innerhalb von 30 Tagen stattgefunden haben.Wählen Sie aus, ob die letzten 6 Besuche innerhalb von 30 Tagen stattgefunden haben

Ich möchte alle Besuche für den Kunden anzeigen, aber ich möchte nur die Gruppen anzeigen, die die Kriterien erfüllen. Muss ich eine Whileprintingrecords tun, um eine datediff zwischen dem ersten und sechsten Datensatz für jede Gruppe zu tun? Wie kann ich das machen?

Hier ist, was ich habe:

30 >= DateDiff ("DD", (if {Command.ROW} = 1 then {Command.Visit_START}, 
    (if {Command.ROW} = 6 then{Command.Visit_STOP})) 
+0

ist die Formel, die Sie geschrieben haben, ist für die erforderlichen Kriterien arbeiten ... wenn ja, dann dies schreibe in supress der Gruppe gibt es sonst noch irgendwelche Fehler dann schreiben Sie, dass – Siva

Antwort

0

Sind Sie in der Lage, die Gruppe in absteigender Reihenfolge zu sortieren? Ich habe eine Idee, aber es wird weniger Arbeit für Sie sein, wenn sie neu zu ältesten gruppiert werden.

Whilereadingrecords:

In jeder Gruppe Sie die erste benötigen und 6. Besuch zu bestimmen. (Sie unterdrücken derzeit alle Gruppen mit weniger als 6.) Um dies zu tun, würde ich eine gemeinsame Variable namens Counter machen, die bei jedem Datensatz um und um eins erhöht wird jedes Mal zurückgesetzt, wenn es eine neue Gruppe erreicht. (Setzen Sie ihn auf Null in der Gruppenkopfzeile.)

Als Nächstes benötigen Sie zwei weitere freigegebene Variablen namens FirstDate und SixthDate. Diese Werte werden mit dem Datumswert ausgefüllt, wenn Counter gleich eins oder sechs ist. Genau wie Counter werden Sie diese jedes Mal zurücksetzen, wenn sich die Gruppe ändert.

Whileprintingrecords:

Wenn alles funktioniert, sollten Sie jetzt die beiden Tage, haben Werte, die Sie für die Berechnungen benötigen. Fügen Sie eine weitere Klausel in Ihrer Formel Stromunterdrückung:

.... 
AND 
DateDiff("d", FirstDate, SixthDate) 
+0

Wenn Sie nicht in der Lage sind, in absteigender Reihenfolge zu sortieren, lassen Sie es mich wissen und ich kann die Antwort überarbeiten, um das zu berücksichtigen. – 4444

Verwandte Themen