Usiłuję przygotować raport dotyczący rekordów czasu pracy pracownika.
Mamy dwie tabele specjalnie na to pytanie. Pracownicy są wyszczególnieni w Members
tabeli i każdego dnia wprowadzają wpisy czasu pracy, którą wykonali i są przechowywane w Time_Entry
tabeli.
Przykładowa konfiguracja z SQL Fiddle: http://sqlfiddle.com/#!3/e3806/7
Końcowy wynik, którego szukam, to tabela, która pokazuje WSZYSTKIE na Members
liście kolumn, a następnie pokazuje ich sumę godzin dla daty zapytanej w innych kolumnach.
Problem wydaje się polegać na tym, że jeśli nie ma wiersza w Time_Entry
tabeli dla konkretnego elementu, to jest teraz wiersz dla tego elementu. Wypróbowałem kilka różnych typów złączeń (lewy, prawy, wewnętrzny, zewnętrzny, pełny zewnętrzny itp.), Ale żaden nie wydaje mi się tego, czego chcę, co byłoby (w oparciu o ostatni przykład w 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
Co aktualnie otrzymuję, gdy pytam o konkretną datę 11-1:
Member_ID | COUNTTime_Entry | TIMEENTRYDATE | SUMHOURS_ACTUAL | SUMHOURS_BILL
EGirsch | 1 | 11-10-2013 | 0.92 | 1
Co jest poprawne w oparciu o jeden wiersz Wpisu Czasu, który jest datowany na 11-10-2013 dla EGirsch, ale muszę zobaczyć zera dla innych członków, aby uzyskać raporty i ewentualnie internetowy pulpit nawigacyjny / raport dla tych informacji.
To jest moje pierwsze pytanie i podczas wyszukiwania zapytań Join itp. Nie jestem pewien, jak mogłaby się nazywać ta funkcja, więc mam nadzieję, że nie jest to duplikat i pomoże innym również w znalezieniu rozwiązania podobne problemy.
WHERE
iAND
. Pierwotnie użyłem aliasów, ale sqlfiddle nie wydawało się to lubić, więc po prostu przeszedłem do pełnego formatu. Dzięki za inne wskazówki SQL. Czy poleciłbyśISNULL
lubCOALESCE
uczyniłby danymi 0 zamiastNULL
? Dzięki jeszcze raz!