Sql server 2005 在包含外部引用的聚合表达式中指定了多列

Sql server 2005 在包含外部引用的聚合表达式中指定了多列,sql-server-2005,Sql Server 2005,下面的查询给出了一个错误 SELECT job.job, ( SELECT SUM((jrt_sch.setup_ticks / 100) + ((jrt_sch.run_ticks_lbr / 100) * job.qty_released)) FROM jrt_sch WHERE jrt_sch.job = job.job ) plnlbr FROM job WHERE job.job = 'J000069762'

下面的查询给出了一个错误

SELECT job.job,
    (
        SELECT SUM((jrt_sch.setup_ticks / 100) + ((jrt_sch.run_ticks_lbr / 100) * job.qty_released))
        FROM jrt_sch
        WHERE jrt_sch.job = job.job
        ) plnlbr
FROM job
WHERE job.job = 'J000069762'
    AND job.suffix = '0'
由于出现以下错误,我无法使用第二方选择中发布的job.qty\u

SELECT job.job,
    (
        SELECT SUM((jrt_sch.setup_ticks / 100) + ((jrt_sch.run_ticks_lbr / 100) * job.qty_released))
        FROM jrt_sch
        WHERE jrt_sch.job = job.job
        ) plnlbr
FROM job
WHERE job.job = 'J000069762'
    AND job.suffix = '0'

在包含外部引用的聚合表达式中指定了多列。如果要聚合的表达式包含外部引用,则该外部引用必须是表达式中引用的唯一列。

它应该如下所示:

SELECT job.job, SUM((jrt_sch.setup_ticks / 100) + 
((jrt_sch.run_ticks_lbr / 100) *      job.qty_released)) plnlbr
from job join jrt_sch on jrt_sch.job=job.job
where job.job ='J000069762' and job.suffix='0'
group by job.job 

要解决语法问题,只需将对
job.qty\u released
的引用移到括号外即可

SELECT job.job,
    job.qty_released * (
        SELECT SUM((jrt_sch.setup_ticks / 100) + ((jrt_sch.run_ticks_lbr / 100)))
        FROM jrt_sch
        WHERE jrt_sch.job = job.job
        ) plnlbr
FROM job
WHERE job.job = 'J000069762'
    AND job.suffix = '0'

我倾向于将这个查询写成一个
join

thnks作为回复。但是我必须使用选择列表中的一些其他字段,这就是为什么我没有使用group by function。下面是我的实际查询。再次感谢。但计算要求释放的数量应在总和内。@Nag-Ah正确。在这种情况下,您需要使用
SUM(setup\u ticks/100)+(SUM(run\u ticks\u lbr/100)*job.qty\u released)
它不能在聚合本身内部引用。@marting这不是ax+Bx。计算结果类似于a+bx。(jrt-sch.setup-ticks/100)+(jrt-sch.run-ticks-lb/100)*发布的作业数量)