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

时间:2011-02-14 11:55:34

标签: 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'
    AND job.suffix = '0'

我无法在第二次选择中使用job.qty_released给出以下错误。

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

2 个答案:

答案 0 :(得分:4)

要修复语法问题,您只需将引用移到括号外的job.qty_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

答案 1 :(得分: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