我在从我的 SQL 语句中获取我想要的结果时遇到问题。我知道我可能遗漏了一些简单的东西,但我就是看不到它。
这是我的桌子。
表:用户 (RoleID 与 Roles 表中的 ID 相关联) ID、 FirstName、 LastName、 RoleID 1,马特,瑞恩,1 2、奇普、琼斯、1 3,胡里奥,琼斯,2 4、杰森、伯恩、3 表:角色 ID、 名称 1、现场代表 2、科技 3、管理员 表:FRrequests (UserID 与 Users 表中的 ID 相关联) ID、 UserID、 Status 1, 1, 打开 2, 1, 提交 3, 1, 延迟 4, 1, 完成
我想要的是一条 SQL 语句,它向我显示所有现场代表的所有“提交”和“延迟”请求的计数。下面是所需结果的示例。
名称 计数 奇珀·琼斯 0 马特·瑞恩 2
这是我到目前为止的声明以及它给我的结果。
SELECT Users.FirstName + ' ' + Users.LastName AS Name, COUNT(FRrequests.ID) AS 'Open Requests' FROM 用户 INNER JOIN 角色 ON Users.RoleID = Roles.ID LEFT OUTER JOIN FRrequests ON Users.ID = FRrequests.UserID WHERE (Roles.Name = N'Field Rep') AND (FRrequests.Status = 'Submitted' OR FRrequests.Status = 'Delayed') GROUP BY Users.FirstName, Users.LastName 名称 计数 马特·瑞恩 2
我知道“AND(FRrequests.Status = 'Submitted' OR FRrequests.Status = 'Delayed')”部分是破坏它的原因。如果我在语句中不使用它运行它,我会得到所有用户,但它会计算所有状态,而不仅仅是提交和延迟。我只是无法弄清楚我缺少什么才能让它工作。任何帮助将不胜感激。