Oracle - ORA-00979: Not a GROUP BY expression

 
Vista:
sin imagen de perfil
Val: 7
Ha disminuido su posición en 2 puestos en Oracle (en relación al último mes)
Gráfica de Oracle

ORA-00979: Not a GROUP BY expression

Publicado por Pablo (4 intervenciones) el 08/02/2019 06:28:51
Buen dia,
Tengo el siguiente query el cual me marca error ORA-00979; por favor me podrian ayudar? Gracias,

SELECT PLANNER_CODE,WIP_ENTITY_NAME,INV.SEGMENT1,
(SELECT MAX(OPERATION_SEQ_NUM) FROM WIP_OPERATIONS WHERE WIP_ENTITY_ID = WIP.WIP_ENTITY_ID AND QUANTITY_RUNNING > 0 AND ROWNUM =1 ) SEQUENCE


FROM WIP_DISCRETE_JOBS JOBS,
MTL_SYSTEM_ITEMS INV,
WIP_ENTITIES WIP

WHERE (WIP.PRIMARY_ITEM_ID = INV.INVENTORY_ITEM_ID) AND
(WIP.ORGANIZATION_ID = INV.ORGANIZATION_ID) AND
(WIP.WIP_ENTITY_ID = JOBS.WIP_ENTITY_ID) AND
(INV.ORGANIZATION_ID = JOBS.ORGANIZATION_ID) AND
(JOBS.ORGANIZATION_ID = 99) AND
(JOBS.START_QUANTITY >= 1) AND
(JOBS.STATUS_TYPE = 3) AND
PLANNER_CODE = '1-1524'


GROUP BY PLANNER_CODE,WIP_ENTITY_NAME,INV.SEGMENT1

ORDER BY INV.SEGMENT1 ASC
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 499
Oro
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

ORA-00979: Not a GROUP BY expression

Publicado por Rafael (328 intervenciones) el 08/02/2019 08:40:48
Hola:

En realidad tienes 2 querys....

Y en ambos tienes errores ....
El primero
1
2
3
4
5
(SELECT MAX(OPERATION_SEQ_NUM)
        FROM   WIP_OPERATIONS
        WHERE  WIP_ENTITY_ID = WIP.WIP_ENTITY_ID
        AND    QUANTITY_RUNNING > 0
        AND    ROWNUM =1)

Esto esta buscando el MAXIMO del CAMPO "OPERATION_SEQ_NUM", este valor es unico...
Si le pones el ROWNUM te va a a devolver el primero que encuentre ... a mi entender lo que quieres es para el WIP_INTITY_ID, y mientras tenga mas de 0 en QUANTITY_RUNNING el numero maximo de OPERATION_SEQ_NUM.... si esto es asi deberia ser solamente...
1
2
3
4
(SELECT MAX(OPERATION_SEQ_NUM)
        FROM   WIP_OPERATIONS
        WHERE  WIP_ENTITY_ID = WIP.WIP_ENTITY_ID
        AND    QUANTITY_RUNNING > 0)

El segundo query lo integras... todo... Aqui tienes 4 campos PLANNER_CODE
, WIP_ENTITY_NAME
, INV.SEGMENT1
Y el que creas con el subquery... NINGUNO de ellos tiene una funcion agregada (SUM, COUNT, AVG, etc)
Luego el error que aparece es por que NO hay nada que agregar... Si bien es cierto que el campo del subquery incluye un MAX esta encapsulado y no es parte del QUERY principal...

Luego entonces como estas usando el GROUP BY supongo es para no tener duplicados...
Asi pues el query deberia funcionarte con algo similar a esto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SELECT DISTINCT PLANNER_CODE
     , WIP_ENTITY_NAME
     , INV.SEGMENT1
     , (SELECT MAX(OPERATION_SEQ_NUM)
        FROM   WIP_OPERATIONS
        WHERE  WIP_ENTITY_ID = WIP.WIP_ENTITY_ID
        AND    QUANTITY_RUNNING > 0) SEQUENCE
FROM   WIP_DISCRETE_JOBS JOBS
     , MTL_SYSTEM_ITEMS INV
     , WIP_ENTITIES WIP
WHERE  WIP.PRIMARY_ITEM_ID = INV.INVENTORY_ITEM_ID
AND    WIP.ORGANIZATION_ID = INV.ORGANIZATION_ID
AND    WIP.WIP_ENTITY_ID = JOBS.WIP_ENTITY_ID
AND    INV.ORGANIZATION_ID = JOBS.ORGANIZATION_ID
AND    JOBS.ORGANIZATION_ID = 99
AND    JOBS.START_QUANTITY >= 1
AND    JOBS.STATUS_TYPE = 3
AND    PLANNER_CODE = '1-1524'
ORDER BY INV.SEGMENT1


Saludos, cuentamos como te ha ido ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 7
Ha disminuido su posición en 2 puestos en Oracle (en relación al último mes)
Gráfica de Oracle

ORA-00979: Not a GROUP BY expression

Publicado por Pablo (4 intervenciones) el 12/02/2019 15:28:19
Buen dia,
Muchas Gracias, corregi los errores y obtuve el resultado, Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar