获取SQL中两个连接表之间的记录计数

时间:2014-05-27 12:06:08

标签: sql group-by

请原谅我的noobness,因为这个问题看起来应该很容易,但我已经尝试了所有我能找到的帮助,让COUNTGROUP BY函数能够用于我的查询,没有运气

这是我的基本目标

  • 获取每个项目在一个时间范围内引起的问题数
  • 列:每个项目引起的问题数,项目ID

数据

  • 数据库有“问题”和“项目”
  • 问题视图不直接链接到项目,而是依赖于我必须加入的桥接列
  • 项目没有指向他们造成的问题的链接

以下是我尝试过的基础知识,我在底部收到错误

Select issues.issue_ID, project.project_ID

From Issues

Left outer join on bridge_ISSUES_to_PROJECT_source

on bridge_ISSUES_to_PROJECT_source.issue_ID=issues.issue_ID

Left outer join on Projects

on bridge_ISSUES_to_PROJECT_source.project_ID=project.project.ID

Group by project.project_ID

错误

Msg 8120, Level 16, State 1, Line 1
Column 'Issues.Issue_ID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

2 个答案:

答案 0 :(得分:0)

使用COUNT()函数替换您对issue_id列的选择:即

SELECT COUNT(issues.issue_ID) AS CountOfIssues ....

编辑:根据您的查询需求,您可能还需要添加DISTINCT关键字:

SELECT COUNT(DISTINCT issues.issue_ID) AS CountOfDistinctIssues ....

答案 1 :(得分:0)

在这个查询中,issue_id不在group by子句中,所以你想在那里添加它,但似乎你想在项目的基础上计算问题然后使用count函数和issue_id之类的count(issue_d),因为你有group by必须将所有字段放在你想要获得结果的group by子句中,或者你必须对这些字段使用任何聚合函数。