2016-07-06 10 views
0

Ich versuche, eine Zählung basierend auf zwei Daten zu erhalten, und ich bin mir nicht sicher, wie es in einer Abfrage aussehen sollte. Ich habe zwei Datumsfelder; Ich möchte eine Zählung basierend auf diesen Daten erhalten.Coldfusion Abfrage von Abfragen zählen nach Datum

<cfquery> 
    SELECT COUNT(*) 
    FROM Table1 
    Where month of date1 is one month less than month of date2 
</cfquery> 
+1

QoQ ist keine Unterstützung für Datumsfunktionen. Lesen Sie [die Dokumentation] (http://help.adobe.com/de_DE/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec0e4fd-7ff0.html) für weitere Details. Wenn Sie Datumsfunktionen benötigen, müssen Sie dies in einer Datenbankabfrage tun. Die Syntax ist dbms-spezifisch. – Leigh

+0

Wie würde das in Orakel aussehen? –

+0

Keine Ahnung. Ich bin kein Oracle-Typ. Haben Sie nach Oracle- und Datumsfunktionen gesucht? Ich bin sicher, dass es das Äquivalent der DateAdd-Funktion haben muss. – Leigh

Antwort

0

Angenommen, Tabelle1 ist Ihre ursprüngliche Abfrage, können Sie Ihr Ziel wie folgt erreichen.

Schritt 1 - Verwenden Sie QueryAddColumn zweimal, um zwei leere Spalten hinzuzufügen.

Schritt 2 - Wiederholen Sie Ihre Abfrage und füllen Sie diese beiden Spalten mit Zahlen. Einer wird date1 und der andere date2 darstellen. Es ist nicht ganz so einfach wie das Eintragen der Monatszahlen, weil man auch das Jahr berücksichtigen muss.

Schritt 3 - Schreiben Sie Q von Q mit einem dieser Filter ähnelt:

where NewColumn1 - NewColumn2 = 1 
+0

Wenn es keinen guten Grund gibt, etwas anderes zu tun, lassen Sie die Datenbank das tun, was sie am besten kann. Die Verwendung von QoQs, um das Schreiben einer korrekten Datenbankabfrage zu vermeiden, ist ein schlechter Ansatz. – Leigh