Estoy tratando de hacer algunos informes para los registros de tiempo de los empleados.
Tenemos dos tablas específicamente para esta pregunta. Los empleados se enumeran en la Memberstabla y cada día ingresan las entradas de tiempo del trabajo que han realizado y se almacenan en la Time_Entrytabla.
Ejemplo de configuración con SQL Fiddle: http://sqlfiddle.com/#!3/e3806/7
El resultado final voy a es una tabla que muestra TODOS los Membersde una lista de columnas y luego mostrarán sus horas de suma de la fecha consultada en las otras columnas.
El problema parece ser que si no hay una fila en la Time_Entrytabla para un miembro en particular, ahora hay una fila para ese miembro. He probado varios tipos de unión diferentes (izquierda, derecha, interior, exterior, exterior completo, etc.) pero ninguno parece darme lo que quiero, que sería (basado en el último ejemplo en 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
Lo que obtengo actualmente cuando consulto la fecha específica del 11-1:
Member_ID | COUNTTime_Entry | TIMEENTRYDATE | SUMHOURS_ACTUAL | SUMHOURS_BILL
EGirsch | 1 | 11-10-2013 | 0.92 | 1
Lo cual es correcto en función de la fila de entrada de tiempo con fecha 10-10-2013 para EGirsch, pero necesito ver ceros para los otros miembros para obtener informes y, finalmente, un tablero web / informe para esta información.
Esta es mi primera pregunta, y aunque busqué consultas de combinación, etc. Honestamente, no estoy seguro de cómo podría llamarse esta función, así que espero que esto no sea un duplicado y ayude a otros a tratar de encontrar una solución para problemas similares
fuente

WHEREyAND. Originalmente había usado alias, pero a sqlfiddle no parecía gustarle, así que solo tomé el formato completo. Gracias por los otros consejos SQL también. ¿RecomendaríaISNULLoCOALESCEhacer que los datos sean 0 en lugar deNULL? ¡Gracias de nuevo!Cuando me he enfrentado a este tipo de problema en el pasado, he creado una tabla de "números" para ayudar a lidiar con las filas que faltan.
Creé mi tabla de números específicamente para tratar las fechas de la siguiente manera:
Esto crea una tabla con una sola fila para cada fecha entre 1900-01-01 y 2099-12-31. Solía
TOP(73049)limitar el intervalo de fechas generado en mi ejemplo a esas fechas; si trabaja con un intervalo de fechas diferente, puede ajustar ese número.A continuación, agrego la
dDatestabla a mi consulta para que se devuelva una fila para cada fecha en el rango deseado para cadamember_id. El resultado se une a laTime_Entrytabla como tal:Esto le permite especificar un rango de fechas para el informe.
Puede refinar aún más los resultados agregando
COALESCE(...)ySUM(...)según:Esto da como resultado la siguiente salida para sus datos de muestra:
fuente