gpt4 book ai didi

用于计算 ID 并在日期范围内的空容器上显示 0 的 SQL 查询

转载 作者:行者123 更新时间:2023-12-04 04:54:29 24 4
gpt4 key购买 nike

我很抱歉,因为我知道这类问题已经被问了很多,但是我看到的帖子似乎不太适合我想要做的事情或有所作为,这是一个简单的解决方案,因为我有一张 table 可以存储一个类型 ID 和保存的日期,然后是具有该类型 ID 和类型名称的另一个表。

我想要的是它会在设定的日期范围内显示所有保存的类型,但显示 0 计数而不是根本不显示该类型。如果我运行我的查询只是一个计数,它正是我想要的

SELECT     dbo.RequestType.Type, COUNT(dbo.Requests.RequestType) AS Count
FROM dbo.RequestType LEFT OUTER JOIN
dbo.Requests ON dbo.RequestType.TypeID = dbo.Requests.RequestType
GROUP BY dbo.RequestType.Type

但是,如果我像这样设置日期范围:
SELECT     dbo.RequestType.Type, COUNT(dbo.Requests.RequestType) AS Count
FROM dbo.RequestType LEFT OUTER JOIN
dbo.Requests ON dbo.RequestType.TypeID = dbo.Requests.RequestType
WHERE (dbo.Requests.DateSaved BETWEEN CONVERT(DATETIME, '2013-01-01 00:00:00', 102) AND CONVERT(DATETIME, '2013-03-30 00:00:00', 102))
GROUP BY dbo.RequestType.Type

然后不显示任何 0 计数?

谢谢

最佳答案

错误是 WHERE 中的任何内容子句将根据记录进行检查,因此如果它引用左外连接右侧的表,则会取消连接的外部性。只需将该条款移至 ON .

SELECT     dbo.RequestType.Type, 
COUNT(dbo.Requests.RequestType) AS Count
FROM dbo.RequestType
LEFT OUTER JOIN dbo.Requests
ON dbo.RequestType.TypeID = dbo.Requests.RequestType
AND (dbo.Requests.DateSaved
BETWEEN CONVERT(DATETIME, '2013-01-01 00:00:00', 102)
AND CONVERT(DATETIME, '2013-03-30 00:00:00', 102))
GROUP BY dbo.RequestType.Type

关于用于计算 ID 并在日期范围内的空容器上显示 0 的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16951242/

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