sql问题,请问一下,此SQL要变成按ROUTE分组计算时间总和该怎么改,groupby好像有问题

WITH LOT_TEMPA AS(

SELECT

L.HIST_SEQ,

L.TRX_TIME,

L.FACTORY ,

L.ORDER_ID ,

L.START_EQUIP_ID EQUIP_ID,

L.FINISH_GOOD_ID DEVICE,

L.PRODUCT_ID PROCESS,

L.PRODUCT_VER PROCESS_VER,

L.ROUTE,

L.ROUTE_VER,

L.OPER,

L.LOT_ID,

L.QTY_1 PanelNum,

L.CREATE_TIME ,

L.START_TIME ,

L.OPER_IN_TIME

FROM WIPMLOTTHIST@MESDB L

WHERE 1=1

AND L.LOT_DEL_YN = ' '

AND L.TRX_CODE IN ('START','CREATE')

),

LOT_TEMPB AS

(SELECT

L.HIST_SEQ,

L.FACTORY ,

L.ORDER_ID ,

L.FINISH_EQUIP_ID  EQUIP_ID,

L.FINISH_GOOD_ID DEVICE,

L.PRODUCT_ID PROCESS,

L.PRODUCT_VER PROCESS_VER,

L.ROUTE,

L.ROUTE_VER,

L.OPER,

L.LOT_ID,

L.QTY_1 PanelNum,

L.CREATE_TIME ,

L.START_TIME ,

L.OPER_IN_TIME ,

L.FINISH_TIME ,

L.OLD_OPER

FROM WIPMLOTTHIST@MESDB L

WHERE 1=1

AND L.LOT_DEL_YN = ' '

AND L.TRX_CODE = 'FINISH')

SELECT

A.FACTORY,

A.ORDER_ID,

A.EQUIP_ID,

A.DEVICE,

F.FINISH_GOOD_GRP_4 PLANTFORM,

A.PROCESS,

A.PROCESS_VER,

A.ROUTE,

A.ROUTE_VER,

A.OPER,

A.LOT_ID,

A.PanelNum,

CASE WHEN A.CREATE_TIME=' '

THEN ' '

ELSE TO_CHAR(TO_DATE(A.CREATE_TIME,'yyyymmddhh24miss'),'yyyy-mm-dd hh24:mi:ss') END CREATE_TIME,

CASE WHEN A.START_TIME=' '

THEN ' '

ELSE TO_CHAR(TO_DATE(A.START_TIME,'yyyymmddhh24miss'),'yyyy-mm-dd hh24:mi:ss') END START_TIME,

CASE WHEN A.OPER_IN_TIME=' '

THEN ' '

ELSE TO_CHAR(TO_DATE(A.OPER_IN_TIME,'yyyymmddhh24miss'),'yyyy-mm-dd hh24:mi:ss') END OPER_IN_TIME,

CASE WHEN B.FINISH_TIME=' '

THEN ' '

ELSE TO_CHAR(TO_DATE(B.FINISH_TIME,'yyyymmddhh24miss'),'yyyy-mm-dd hh24:mi:ss') END FINISH_TIME,

CASE WHEN B.FINISH_TIME=' '

THEN 0

ELSE ROUND((TO_DATE(B.FINISH_TIME,'yyyymmddhh24miss')-TO_DATE(A.START_TIME,'yyyymmddhh24miss'))*24,2) END CYCLE_TIME,

CASE WHEN A.START_TIME=' '

THEN ROUND((SYSDATE-TO_DATE(NVL(TRIM(A.LAST_FINISH_TIME),A.CREATE_TIME),'YYYYMMDDHH24MISS'))*24,2)

ELSE ROUND((TO_DATE(A.START_TIME,'YYYYMMDDHH24MISS')-TO_DATE(NVL(TRIM(A.LAST_FINISH_TIME),A.CREATE_TIME),'YYYYMMDDHH24MISS'))*24,2) END WAIT_TIME,

CASE WHEN B.FINISH_TIME=' '

THEN ROUND((SYSDATE-TO_DATE(NVL(TRIM(A.LAST_FINISH_TIME),A.CREATE_TIME),'YYYYMMDDHH24MISS'))*24,2)

ELSE ROUND((TO_DATE(B.FINISH_TIME,'YYYYMMDDHH24MISS')-TO_DATE(NVL(TRIM(A.LAST_FINISH_TIME),A.CREATE_TIME),'YYYYMMDDHH24MISS'))*24,2) END WIP_TIME

FROM LOT_TEMPB B,WIPMFHGDDFNT@MESDB F,

(SELECT (SELECT MAX(FINISH_TIME) FROM WIPMLOTTHIST@MESDB B WHERE B.LOT_ID=A.LOT_ID AND B.HIST_SEQ < A.HIST_SEQ AND B.ROUTE = A.ROUTE) LAST_FINISH_TIME,A.* FROM LOT_TEMPA A

) A

WHERE 1=1

AND A.FACTORY = B.FACTORY(+)

AND A.LOT_ID = B.LOT_ID(+)

AND A.ORDER_ID = B.ORDER_ID(+)

AND A.DEVICE = B.DEVICE(+)

AND A.PROCESS = B.PROCESS(+)

AND A.ROUTE = B.ROUTE(+)

AND A.OPER = B.OLD_OPER(+)

AND A.FACTORY = F.FACTORY (+)

AND A.DEVICE = F.FINISH_GOOD_ID (+)

AND A.PROCESS = F.PRODUCT_ID (+)

AND A.FACTORY = NVL(TRIM('${FACTORY}'),A.FACTORY)

AND A.LOT_ID = NVL(TRIM('${LOT_ID}'),A.LOT_ID)

AND A.OPER = NVL(TRIM('${OPER}'),A.OPER)

AND A.TRX_TIME >= TO_CHAR(TO_DATE(TRIM('${fromTime}'),'yyyy-mm-dd hh24:mi:ss'),'yyyymmddhh24miss')

AND A.TRX_TIME <= TO_CHAR(TO_DATE(TRIM('${toTime}'),'yyyy-mm-dd hh24:mi:ss'),'yyyymmddhh24miss')

ORDER BY A.FACTORY,A.ORDER_ID,A.ROUTE,A.OPER,A.LOT_ID

SQL 用户D8037031 发布于 2023-2-22 20:13
1min目标场景问卷 立即参与
回答问题
悬赏:0 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
取消
  • 1关注人数
  • 298浏览人数
  • 最后回答于:2023-2-22 20:13
    请选择关闭问题的原因
    确定 取消
    返回顶部