Ich versuche, einige Berichte für Mitarbeiterzeitaufzeichnungen zu erstellen.
Wir haben zwei Tabellen speziell für diese Frage. Die Mitarbeiter werden in der Members
Tabelle aufgelistet und geben jeden Tag Zeiteinträge der von ihnen geleisteten Arbeit ein und werden in der Time_Entry
Tabelle gespeichert .
Beispiel-Setup mit SQL Fiddle: http://sqlfiddle.com/#!3/e3806/7
Das Endergebnis werde mich für eine Tabelle , die zeigt ALL die Members
in einer Spaltenliste und dann ihre Summe Stunden für das Datum in den anderen Spalten abgefragt zeigen.
Das Problem scheint zu sein, dass, wenn Time_Entry
für ein bestimmtes Mitglied keine Zeile in der Tabelle vorhanden ist, jetzt eine Zeile für dieses Mitglied vorhanden ist. Ich habe verschiedene Join-Typen ausprobiert (links, rechts, innen, außen, vollständig außen usw.), aber keiner scheint mir das zu geben, was ich möchte, basierend auf dem letzten Beispiel in SQL Fiddle:
/*** Desired End Result ***/
Member_ID | COUNTTime_Entry | TIMEENTRYDATE | SUMHOURS_ACTUAL | SUMHOURS_BILL
ADavis | 0 | 11-10-2013 | 0 | 0
BTronton | 0 | 11-10-2013 | 0 | 0
CJones | 0 | 11-10-2013 | 0 | 0
DSmith | 0 | 11-10-2013 | 0 | 0
EGirsch | 1 | 11-10-2013 | 0.92 | 1
FRowden | 0 | 11-10-2013 | 0 | 0
Was ich derzeit bekomme, wenn ich nach einem bestimmten Datum von 11-1 frage:
Member_ID | COUNTTime_Entry | TIMEENTRYDATE | SUMHOURS_ACTUAL | SUMHOURS_BILL
EGirsch | 1 | 11-10-2013 | 0.92 | 1
Was richtig ist, basierend auf der One Time Entry-Zeile vom 11.10.2013 für EGirsch, aber ich muss Nullen für die anderen Mitglieder sehen, um Berichte und schließlich ein Web-Dashboard / Bericht für diese Informationen zu erhalten.
Dies ist meine erste Frage, und während ich nach Join-Abfragen usw. gesucht habe, bin ich mir ehrlich gesagt nicht sicher, wie diese Funktion heißen könnte. Ich hoffe, dass dies kein Duplikat ist und auch anderen hilft, eine Lösung zu finden ähnliche Probleme.
WHERE
undAND
. Ich hatte ursprünglich Aliase verwendet, aber sqlfiddle schien es nicht zu mögen, also ging ich einfach ins Vollformat. Vielen Dank auch für die anderen SQL-Tipps. Würden Sie empfehlenISNULL
oderCOALESCE
die Daten 0 statt machenNULL
? Danke noch einmal!