我需要“生成一个查询,以显示最少总工作数的两个分支的分支名称和工作总数。会计师工作的分支决定哪些工作与哪个分支相关联。“
这是我试图回答:
SELECT TOP 2 b.branchName, SUM(j.job_id)
FROM branch AS b
LEFT OUTER JOIN job AS j
ON b.branch_id - b.branch_id
ORDER BY sum(j.job_id);
我收到错误
Msg 4145, Level 15, State 1, Line 129 An expression of non-boolean type specified in a context
where a condition is expected, near 'ORDER'
答案 0 :(得分:0)
这看起来像是一个家庭作业问题,所以我不会给出一个有效的例子,而是尝试解释当前查询的一些问题。
你得到的错误
Msg 4145, Level 15, State 1, Line 129 An expression of non-boolean type specified
in a context where a condition is expected, near 'ORDER'
是因为ON
子句需要一个计算结果为boolean
的表达式。您当前使用的表达式可能会评估为int
此
LEFT OUTER JOIN job AS j
ON b.branch_id - b.branch_id -- i.e 5 - 3 := 2
应该是
LEFT OUTER JOIN job AS j
ON b.branch_id = b.branch_id -- i.e. 5 = 3 := false
获取sum()
ID没有意义
BranchId | JobId
----------------
1 | 1 --|
1 | 2 | sum(JobId) is 6
1 | 3 --|
2 | 2 --|
2 | 3 | sum(JobId) is 9
2 | 4 --|
您最想要的是count()
BranchId | JobId
----------------
1 | 1 --|
1 | 2 | count(JobId) is 3
1 | 3 --|
2 | 2 --|
2 | 3 | count(JobId) is 3
2 | 4 --|
您缺少group by
子句
TOP n
只会返回第一个n
结果,并且在记录绑定时不会考虑,为此您可以使用WITH TIES
子句。