我有两个表:TaskUser和PaperMaterial
TaskUser - 包含所有用户一个标题为:User1的列,可以是PaperMaterial表中的用户
PaperMaterial - 多列表,其中可以在多个日期为同一用户多次写入数据。
我想要完成的是一个查询,它将显示给定日期范围内的所有用户及其总页数,无论他们是否在纸质资料表中都有数据。
IE:
Select Assigned_To,
Case
When PaperMaterial.Assigned_To = TaskUser.User1 then sum(Page_Count)
When PaperMaterial.Assigned_To <> TaskUser.User1 then '0'
End as Count1
From PaperMaterial
Inner Join TaskUser
on TaskUser.User1 = PaperMaterial.Assigned_To
Where Date_Assigned between ('06/09/2014') and ('06/13/2014')
Order By Assigned_To
现在,显然这段代码不起作用,因为我是SQL的新手,我还不是很好。但是,您应该能够在此处查看目标。这是:
迈克0 鲍勃200谢谢
答案 0 :(得分:1)
我认为这会解决问题
SELECT a.User1, ifnull(sum(Page_Count),0) AS Count1
From TaskUser AS a
LEFT JOIN PaperMaterial AS b
ON b.Assigned_To = a.User1
Where Date_Assigned between DATE('2014-06-09') AND DATE('2014-06-13')
GROUP BY a.User1
Order By a.User1
您可能需要调整Date_Assigned逻辑,具体取决于您的日期格式......但您使用的当前条款并没有多大意义。假设您的Date_Assigned变量被格式化为日期或日期时间,我认为上面的那个应该完成这项工作