Tengo agregada en mi consulta SUMA de AMUNT campo de acuerdo a WERKS, DATUM y UZEIT
Intento hacer un grupo sin ningún tipo de éxito
Tengo un error como que:ABAP Suma con la agrupación en el SELECT de la Consulta

¿Cuál es el problema en mi código?

Que es mi código ABAP:

 DATA: gt_compr TYPE TABLE OF yrt_h_sales
 SELECT    werks, extnb, datum, uzeit, sumvt, deprt, dpext, SUM( amunt ) AS amunt
  INTO      CORRESPONDING FIELDS OF TABLE @gt_compr
  FROM      yrt_h_sales 
  WHERE     werks IN @so_werks
  AND       datum IN @so_datum
  GROUP BY  werks, datum, uzeit.

Después de que me corrigió y me hizo esto, el código es como sigue:

 SELECT    werks,  datum, uzeit, extnb, deprt, dpext, SUM( amunt ) AS amunt
  INTO      CORRESPONDING FIELDS OF TABLE @gt_compr
  FROM      yrt_h_sales
  WHERE     werks IN @so_werks
  AND       datum IN @so_datum
  GROUP BY  werks, datum, uzeit,  extnb, deprt, dpext.

Así que no tengo el error de compilación más, pero la agregación sigue sin funcionar! Tengo un 43 línea de resultados sin que se suma en el AMUNT columna

P. S. esta es la estructura de mi mesa:
ABAP Suma con la agrupación en el SELECT de la Consulta

  • Has probado a especificar las columnas de clave primero? Al parecer GROUP BY orden no asunto.
  • Sí he probado pero no funciona, creo que el problema es porque la otra columna y no en el grupo por la agregación. Por ejemplo si se hace simplemente SELECCIONE werks, datum, uzeit, SUM( amunt ) COMO amunt funciona
  • Por favor, añada la estructura de la tabla de yrt_h_sales o abrir el cristal de la bola de la conexión del sistema de forma que podemos echar un vistazo a nosotros mismos….
  • el cristal de la bola de sistema?? Lo que s que? @vwegert
  • en.wikipedia.org/wiki/Crystal_ball no Hay suficiente información para contestar así que necesitamos un poco de magia para obtener más detalles.
  • En lo que no funciona? Puede usted enviar algunos datos de la muestra de los registros de la tabla a punto de salir, dónde se encuentra exactamente la suma falla? La consulta se ve bien, así que creo que el problema está en otro lugar o incluso hay ningún problema en absoluto. De todos modos, si usted desea agrupar por sólo WERKS, DATUM, UZEIT y, al mismo tiempo que desee para mostrar las otras columnas de la clave primaria, entonces el problema no está en la codificación, es en algún lugar en su lógica porque tal construcción no tiene ningún sentido y es semánticamente incorrecto.
  • Está agrupando a todos los campos de la tabla así que hay efectivamente habrá de agregación. ¿Como la respuesta de @vwegert sugiere y agregar los agregadores para los tres campos que no desea agrupar por, por ejemplo, MIN(EXTNB) etc.

InformationsquelleAutor shmoolki | 2017-02-15

1 Comentario

  1. 6

    Su observación es consistente con la documentación (y lo que he visto en cualquier otro RDBMS he trabajado con):

    Si agregados se utilizan expresiones, cualquier identificadores de columna que no son
    incluido como argumentos de una función de agregado debe ser incluido después de
    la adición GROUP BY.

    Tomemos, por ejemplo, el campo de tiempo UZEIT: Se puede decir que el sistema de agregado (en su caso, suma) de todos los montos que para el mismo punto en el tiempo mediante la adición a la GROUP BY cláusula, o se puede aplicar una función de agregado así (SUM no tendría ningún sentido aquí, pero MIN posible), o usted podría omitir el campo por completo. Usted puede no dejarlo colgando alrededor, sin más especificación – el campo debe ser parte del nuevo conjunto de claves creado por GROUP BY o tiene que tener una función de agregado aplicado para que el sistema sepa qué hacer con varios conjuntos de datos que puedan producirse en el grupo.

    (Esto es básico SQL btw y no ABAP conocimientos específicos.)

    • Quise escribir «Amén» en el comentario, pero la stackoverflow no me deja publicar una menor de 15 caracteres.

Dejar respuesta

Please enter your comment!
Please enter your name here