-1

我需要“生成一个查询以显示职位总数最少的两个分公司的分公司名称和职位总数。会计师工作的分公司决定了哪些职位与哪个分公司相关联。”

这是我试图回答的:

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'
4

1 回答 1

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子句需要一个计算结果为 a 的表达式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()身份证没有意义

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子句。

于 2013-11-03T15:09:57.590 回答