Трудно ответить, не видя, не видя структуру ваших таблиц, однако вот несколько предположений:
несколько полей вывода построены из NVL/DECODE
в одном поле(ы).Это побеждает агрегацию и может генерировать дубликаты.Либо удалите эту логику, либо скопируйте NVL/DECODE
в предложение GROUP BY
У вас есть фильтр в поле, которое вы не отображаете, и вы, кажется, ожидаете одну строкутем не мение ;удалить этот бесполезный уровень агрегации
Вот запрос, который реализует вышеуказанные принципы:
SELECT
T1.LINE_CD,
T1.ITM_CD,
T1.INST_NO,
T1.PROD_SCHD_QTY,
NVL(DECODE(T1.SHIFT,1,T1.PROD_RESULT),0)AS PROD_SHIFT1,
NVL(DECODE(T1.SHIFT,1,T1.PROD_RESULT),0)AS PROD_SHIFT1,
NVL(DECODE(T1.SHIFT,2,T1.PROD_RESULT),0)AS PROD_SHIFT2,
NVL(DECODE(T1.SHIFT,3,T1.PROD_RESULT),0)AS PROD_SHIFT3,
NVL(DECODE(T1.SHIFT,1,T1.TF_FG),0)AS TRANS_SHIFT1,
NVL(DECODE(T1.SHIFT,2,T1.TF_FG),0)AS TRANS_SHIFT2,
NVL(DECODE(T1.SHIFT,3,T1.TF_FG),0)AS TRANS_SHIFT3,
NVL(SUM(T1.PROD_RESULT),0) AS TOTAL_PRODUCTION,
NVL(SUM(T1.TF_FG),0) AS TOTAL_TRANSFER
FROM TMCI_IM_PROD T1
INNER JOIN CM_HINMO_ALL T2 ON T1.ITM_CD=T2.ITM_CD
WHERE
T1.INST_NO = 'M181101666' AND
T1.INS_TS BETWEEN TO_DATE(:qDT_FROM, 'DDMMYYYY HH24:MI:SS') AND TO_DATE(:qDT_TO, 'DDMMYYYY HH24:MI:SS')
GROUP BY
T1.LINE_CD,
T1.ITM_CD,
T1.INST_NO,
T1.SHIFT,
T1.PROD_SCHD_QTY,
NVL(DECODE(T1.SHIFT,1,T1.PROD_RESULT),0),
NVL(DECODE(T1.SHIFT,1,T1.PROD_RESULT),0),
NVL(DECODE(T1.SHIFT,2,T1.PROD_RESULT),0),
NVL(DECODE(T1.SHIFT,3,T1.PROD_RESULT),0),
NVL(DECODE(T1.SHIFT,1,T1.TF_FG),0),
NVL(DECODE(T1.SHIFT,2,T1.TF_FG),0),
NVL(DECODE(T1.SHIFT,3,T1.TF_FG),0)