gpt4 book ai didi

为没有结果而替换为 0 的 SQL 语句

转载 作者:行者123 更新时间:2023-12-01 05:27:08 25 4
gpt4 key购买 nike

我在从 SQL 语句中获取我想要的结果时遇到问题。我知道我可能遗漏了一些简单的东西,但我就是看不到它。

这是我的 table 。

表:用户(RoleID 链接到 Roles 表中的 ID)
ID、名字、姓氏、角色 ID
1,马特,瑞恩,1
2、奇普、琼斯、1
3、胡里奥、琼斯、2
4、杰森、伯恩、3

表:角色
身份证、姓名
1、现场代表
2、技术
3、管理员

表:FRrequests(用户 ID 链接到用户表中的 ID)
ID、用户 ID、状态
1, 1, 打开
2、1、提交
3, 1, 延迟
4, 1, 完成

我想要的是一个 SQL 语句,它向我显示所有现场代表的所有“已提交”和“延迟”请求的计数。以下是所需结果的示例。

姓名计数
奇普琼斯 0
马特瑞恩 2

这是我到目前为止的陈述以及它给我的结果。

SELECT Users.FirstName + ' ' + Users.LastName AS Name, COUNT(FRrequests.ID) AS 'Open Requests'
从用户内部连接
角色 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')”部分是破坏它的原因。如果我没有在语句中运行它,我会得到所有用户,但它会计算所有状态,而不仅仅是提交和延迟。我只是无法弄清楚我缺少什么才能让它发挥作用。任何帮助将不胜感激。

最佳答案

您真的很接近,请尝试以下操作:

SELECT U.FirstName + ' ' + U.LastName AS Name, COUNT(F.ID) AS 'Open Requests'
FROM Users U
INNER JOIN Roles R
ON U.RoleID = R.ID
LEFT JOIN ( SELECT * FROM FRrequests
WHERE Status IN ('Submitted','Delayed')) F
ON U.ID = F.UserID
WHERE R.Name = N'Field Rep'
GROUP BY U.FirstName, U.LastName

关于为没有结果而替换为 0 的 SQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13278315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com