Sql 基于三个表显示空值
我正在努力向员工展示前一周没有上班的情况。我目前正在处理三张桌子。一个表是一个日历,它有每周的第一个日期。周格式为周日至周六。第二个表是输入的小时列表。时间表包含输入时间的日期和员工姓名。第三张表是所有员工的名单。我似乎无法让连接按我希望的方式工作。最终结果我希望看到Bob在第7周和第8周输入时间,但第9周为空。谢谢你的帮助。非常感谢 现行代码Sql 基于三个表显示空值,sql,sql-server,Sql,Sql Server,我正在努力向员工展示前一周没有上班的情况。我目前正在处理三张桌子。一个表是一个日历,它有每周的第一个日期。周格式为周日至周六。第二个表是输入的小时列表。时间表包含输入时间的日期和员工姓名。第三张表是所有员工的名单。我似乎无法让连接按我希望的方式工作。最终结果我希望看到Bob在第7周和第8周输入时间,但第9周为空。谢谢你的帮助。非常感谢 现行代码 SELECT d.Resource ,SUM(p.Hours) AS Hours ,m.[WeeksSundayToSaturd
SELECT
d.Resource
,SUM(p.Hours) AS Hours
,m.[WeeksSundayToSaturday]
,DatePart(wk, m.[WeeksSundayToSaturday]) AS WeekNumber
FROM CalendarWeeks m
LEFT JOIN [TimeTracking] p ON
(m.[WeeksSundayToSaturday] BETWEEN p.Date AND p.Date + 7)
RIGHT JOIN [DepartmentMembers] d ON
d.Resource = p.CreatedBy
GROUP BY
d.Resource
,m.WeeksSundayToSaturday
数据表
Department Members
Name Department
Bob Engineer
Sue HR
John Operations
Time Tracking
Resource Hours Date
Bob 13 2/9/2014
Sue 12 2/10/2014
John 2 2/11/2014
Bob 6 2/12/2014
Bob 8 2/13/2014
John 8 2/14/2014
John 8 2/15/2014
Bob 8 2/16/2014
Bob 1 2/17/2014
Bob 2 2/18/2014
Bob 1 2/19/2014
Bob 8 2/20/2014
Bob 9 2/21/2014
Bob 6 2/22/2014
Sue 8 2/23/2014
John 2 2/24/2014
Calendar
WeeksSundayToSaturday
1/5/2014
1/12/2014
1/19/2014
1/26/2014
2/2/2014
2/9/2014
2/16/2014
2/23/2014
3/2/2014
3/9/2014
3/16/2014
3/23/2014
3/30/2014
期望结果
Bob
Week 7 = 27
Week 8 = 35
Week 9 = NULL
您上面的查询出现编译错误,请尝试下面的查询,我认为这将对您有所帮助 挑选 d、 资源 ,总和(p.小时)为小时 ,m.[星期日至星期六] ,DatePart(工作日,星期六[星期日至星期六])作为周号 从日历 左键加入[TimeTracking]p ON(p.日期介于 m、 [星期日至星期六]和日期添加(d、6、m[星期日至星期六]) 右键连接d上的[DepartmentMembers]d。资源=p.CreatedBy d.资源组,m.周星期日至星期六
尝试在TimeTracking表上执行外部联接:左外部联接[TimeTracking]p打开