我希望能够提高我的店铺效率。为此,我需要来自3个不同表JOMAST,JODRTG和INRTGS的数据。所以我提出了以下查询:
select jomast.fpartno AS 'Part Number',
JODRTG.foperno AS 'OP Number',
JODRTG.fopermemo As ' Description',
JODRTG.fpro_id AS 'Work Center',
jodrtg.fprod_tim AS ' Act. Production Time',
inrtgs.fuprodtime AS 'Est. Prodution Time'
from jodrtg
Left join jomast on jodrtg.fjobno = jomast.fjobno
left join inrtgs on jomast.fpartno = inrtgs.fpartno
现在我需要做的是平均法案。生产时间。并使用该部分的所有OP编号将其记录到零件编号。
当我尝试Group By JOMAST.fpartno
时,我收到一个无法使用的错误和外部列。如果我在操作编号上执行分组操作,则将合并每个部件的所有操作10。这不是理想的结果。
有人可以指出我需要去实现我的结果吗?
答案 0 :(得分:0)
听起来您希望多行显示相同的jodrtg.fpartno
,所有显示的都是jodrtg.fprod_tim
,但都显示jodrtg.fprod_tim
的平均值(相同)是吗?
如果是,请添加:
AVG(jodrtg.fprod_tim) OVER(PARTITION BY jodrtg.fpartno) as avg_for_all_fprod_tim
作为您要选择的列列表中的列。
有关详细信息,您可以使用google PARTITION BY,但可以将其视为对数据执行GROUP BY x,AVG(y)(或sum,max等)的指令,但随后将该AVG放入行中x存在的每一行的数据..
基本上它与编写(SELECT jodrtg.fpartno, avg(jodrtg.fprod_tim) as avg_for_all_frod_tim FROM blah GROUP BY jodrtg.fpartno)
的较小子查询然后将其连接回主查询相同