我正在尝试完成一些有关员工时间记录的报告。
我们有两个专门针对此问题的表格。Members
表中列出了员工,他们每天输入他们已执行的工作的时间条目并将其存储在Time_Entry
表中。
使用SQL Fiddle进行设置的示例:http ://sqlfiddle.com/#!3/e3806/7
最终的结果我要的是一个表,表示所有的Members
列中的列表,然后将展示他们的总和小时,在其他列查询的日期。
问题似乎是,如果Time_Entry
表中没有特定成员的行,那么该成员现在将有一行。我尝试了几种不同的联接类型(左,右,内部,外部,完全外部等),但似乎没有一种能满足我的要求(基于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
查询11-1的特定日期时,我现在得到什么:
Member_ID | COUNTTime_Entry | TIMEENTRYDATE | SUMHOURS_ACTUAL | SUMHOURS_BILL
EGirsch | 1 | 11-10-2013 | 0.92 | 1
根据日期为2013年10月10日的EGirsch的一个“时间输入”行,这是正确的,但是我需要为其他成员看到零才能获取报告,并最终获得此信息的Web仪表板/报告。
这是我的第一个问题,当我搜索Join查询等时。老实说,我不确定该函数的名称,所以我希望这不是重复的,也可以帮助其他人寻找解决方案。类似的问题。
WHERE
和AND
。我最初使用别名,但是sqlfiddle似乎不喜欢它,所以我只使用了完整格式。也感谢其他SQL技巧。您会建议ISNULL
还是COALESCE
将数据设为0而不是NULL
?再次感谢!