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)*发布的作业数量)