当前位置: 首页 > 面试题库 >

SQL-即使项目的计数为零,也返回所有行

龚同
2023-03-14
问题内容

我正在根据日期范围进行计数。当前查询确实返回正确的结果,但我需要其他信息。在当前形式下,查询将显示具有正确计数的项目。但是,我需要显示所有项目,即使在指定的日期范围内它们的计数为零。

这是SQL代码

INSERT INTO @CreationCount (BaselineID, Name)

SELECT distinct [BaselineID],[Name] 
FROM [Baseline_INFO]

DECLARE @ReqType TABLE (Type nvarchar(128))
INSERT INTO @ReqType (Type)
SELECT DISTINCT Tree.Type as 'Requirement Type'
FROM [TREE]
INNER JOIN [Project_INFO]  ON [Project_INFO].[ProjectID]=[Tree].[Project_ID] 
INNER JOIN [Baseline_INFO] ON [Baseline_INFO].[BaselineID]=[Tree].[Baseline_ID]
WHERE [Project_INFO].[Name] = 'Address Book' AND [Baseline_INFO].[Name] = 'Current
Baseline' 
Group By Tree.Type

SELECT Tree.Type as 'Requirement Type', COUNT(Tree.Type) as 'Number in Creation Range' 
FROM [Tree] 
INNER JOIN @ReqType As RT on RT.Type = Tree.Type
INNER JOIN [Project_INFO]  ON [Project_INFO].[ProjectID]=[Tree].[Project_ID] 
INNER JOIN @CreationCount AS CCount ON CCount.BaselineID=Tree.Baseline_ID 
WHERE [Project_INFO].[Name] = 'Address Book' AND CCount.Name = 'Current Baseline' 
AND [Tree].[creationDate] >= ('2010-01-01') and [Tree].[creationDate] < ('2020-01-01') 
GROUP BY tree.Type

当我执行此查询时,我得到以下结果:

https://dl.dropbox.com/u/17234826/SQLresult.png

这个结果是正确的,但是即使创建范围中没有需求,我也需要列出所有需求类型,即

https://dl.dropbox.com/u/17234826/SQLresult1.png

我尝试使用各种联接,IFNULL和ISNULL,但没有任何工作。

如果有人能指出我正确的方向,我将不胜感激。


问题答案:

修改第二个查询

SELECT Tree.Type as 'Requirement Type',
       COUNT(CASE WHEN [Tree].[creationDate] >= ('2010-01-01') and [Tree].[creationDate] < ('2020-01-01') THEN Tree.Type END) AS 'Number in Creation Range'
FROM [Tree] 
INNER JOIN @ReqType As RT on RT.Type = Tree.Type
INNER JOIN [Project_INFO]  ON [Project_INFO].[ProjectID]=[Tree].[Project_ID] 
INNER JOIN @CreationCount AS CCount ON CCount.BaselineID=Tree.Baseline_ID 
WHERE [Project_INFO].[Name] = 'Address Book' AND CCount.Name = 'Current Baseline' 
GROUP BY tree.Type


 类似资料:
  • 问题内容: 这是我的代码。出于某种原因,如果我提交表单时未放置密码,则仍会创建数据库条目。整个代码中散布着一些注释,但是代码相当简单。有任何想法吗? 问题答案: 如果声明了变量,则仍然设置空字符串和/或空字符串。尝试这个:

  • 问题内容: 我有这种简单的查询,它返回给定id的非空整数字段: 问题是,如果找不到ID,则结果集为空。我需要查询始终返回一个值,即使没有结果也是如此。 我有这个东西工作,但我不喜欢它,因为它运行相同子查询的2倍: 如果该行存在,则返回field1,否则返回0。有什么改进的方法吗? 谢谢! 编辑以下一些评论和答案 :是的,它必须在 单个查询语句中, 并且我不能使用count技巧,因为 我只需要返回1

  • 我有一种感觉,这是一个业余的错误,我希望你们能帮助我!

  • 问题内容: 考试分为4个部分,每个部分都有不同数量的问题。我想知道,对于每个学生和每个部分,他们正确回答了多少个问题(响应= 1)。 但是,通过此查询,如果学生在给定的部分中没有正确的问题,则该行将完全不在我的结果集中。我如何确保每位学生总是返回4行,即使一行的“总计”为0也是如此? 这是我的结果集的样子: 感谢您的任何见解! 更新:我试过了 而这完全没有改变结果。还有其他想法吗? 更新2:由于以

  • 问题内容: 我正在尝试使用课程表重叠的教室,我的桌子是:课程: 日程: 课堂: 我的SQL是: 我得到: 但是我只需要显示count的所有最大值(目前只有1条这样的行)。我试过了 而是返回空表。怎么了?或者,也许是另一种解决方案的建议,以获得我所需要的? 问题答案: 以下将返回与最大计数匹配的所有组 SQL小提琴