Ich möchte einige COUNT Daten nach Woche zusammenfassen. Die Woche beginnt am Sonntag. Die Abfrage muss für Wochen, wo die COUNT 0 ist, berücksichtigen. Die Zählungen sind an zwei Daten. Ein Überweisungsdatum und das Servicedatum. Alles, was ich tun möchte, ist die Anzahl der Empfehlungen für jede Woche zu zählen und wie viele Service-Daten gibt es in der gleichen Woche. Diese beiden COUNTS sind nicht verknüpft. Eine Überweisung kann in 1 Woche kommen, aber der Service wird eine weitere Woche erledigt.Zusammenfassung nach Woche mit COUNT von zwei Datumsspalten
Mein Versuch: 1) Ich habe eine Kalender-Tabelle mit einem Eintrag für jeden Tag für den Zeitraum, den ich arbeite, erstellt. Die Datumsangaben umfassen mehr als den verwendeten Zeitraum. 2) Ich habe ein Feld in meiner Auswahl, die nach 'Woche Anfang' zusammenfasst 3) Ich habe COUNT Felder in jedem der Datumsfelder (Referral, Visits). Beachten Sie, dass ich Distinct verwenden, da es mehrere Service-Codes für einen Besuch sind, aber ich brauche sie nur als 1.
Hier zu zählen ist der Code:
select
STR_TO_DATE(DATE_FORMAT(FROM_DAYS(TO_DAYS(calendar.datefield) - MOD(TO_DAYS(calendar.datefield) -1, 7)),'%m/%d/%Y'), '%m/%d/%Y') AS `Week Beginning`,
COUNT(DISTINCT opsData.`Patient Last Name`, opsData.`Patient First Name`, opsData.Discipline, opsData.`Referral Date`) as `Referrals`,
COUNT(DISTINCT opsData.`Patient Last Name`, opsData.`Patient First Name`, opsData.`Date of Service`) as Visits
from opsdata RIGHT JOIN calendar ON (DATE(opsData.`Referral Date`) = calendar.datefield)
where (calendar.datefield BETWEEN (SELECT MIN(DATE(opsData.`Referral Date`)) FROM opsdata) AND (SELECT MAX(DATE(opsData.`Referral Date`)) FROM opsdata))
group by `Week Beginning`
order by `Week Beginning` ASC
Das Problem, das ich habe, ist, dass ich nur 1 von den ZÄHLEN bekommen kann, um auf der RECHTEN VERBINDUNG zu einer Zeit genau zu sein. Wenn ich DATE (opsData. Referral Date
) verwende, dann ist der Verweis COUNT korrekt und die Besuche sind falsch. Wenn ich DATE (opsData. Date of Service
) verwende, dann sind die Besuche korrekt und der Verweis COUNT ist falsch.
Irgendwelche Ideen?
Ich habe das gleiche Ergebnis mit dem neuen Code, den Sie empfohlen. Um einen Test auszuführen, um zu sehen, ob die WHERE-Klausel das Problem ist, habe ich sie in: calendar.datefield> = date ('2016/01/01') und calendar.datefield <= date ('2016/06/10') und geändert Ich habe das gleiche Ergebnis wie mit Ihrem Code und meinem ursprünglichen Code. – Gsm
In diesem Fall müssen Sie Beispieldaten, die tatsächliche Ausgabe, die Sie von Ihrer Abfrage erhalten, und das erwartete Ergebnis als Bearbeitung der Frage bereitstellen. – Shadow