Sql 基于三个表显示空值

Sql 基于三个表显示空值,sql,sql-server,Sql,Sql Server,我正在努力向员工展示前一周没有上班的情况。我目前正在处理三张桌子。一个表是一个日历,它有每周的第一个日期。周格式为周日至周六。第二个表是输入的小时列表。时间表包含输入时间的日期和员工姓名。第三张表是所有员工的名单。我似乎无法让连接按我希望的方式工作。最终结果我希望看到Bob在第7周和第8周输入时间,但第9周为空。谢谢你的帮助。非常感谢 现行代码 SELECT d.Resource ,SUM(p.Hours) AS Hours ,m.[WeeksSundayToSaturd

我正在努力向员工展示前一周没有上班的情况。我目前正在处理三张桌子。一个表是一个日历,它有每周的第一个日期。周格式为周日至周六。第二个表是输入的小时列表。时间表包含输入时间的日期和员工姓名。第三张表是所有员工的名单。我似乎无法让连接按我希望的方式工作。最终结果我希望看到Bob在第7周和第8周输入时间,但第9周为空。谢谢你的帮助。非常感谢

现行代码

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打开