PDA

Ver la Versión Completa : De una tabla interna agrupar por el campo y que sume


tate
26/03/10, 11:35:08
Hola, tengo esta tabla interna:
campo1 campo2
1| 0000000001 | 0002 | |
2| 0000000001 | 0001 | |
3| 0000000017 | 0001 |

lo que quiero esque si el campo 1 hay repetido, que me lo saque en una linea y me sume el campo2, quedando asi:


campo1 campo2
1| 0000000001 | 0003 |
2| 0000000017 | 0001 |

mysmb2
26/03/10, 11:42:13
tenes que usar la sentencia collect.
Saludos

tate
26/03/10, 11:51:41
Pero como, porque no consigo hacer el collect.

Yo tengo esta select.

SELECT leist imeng
FROM nlei
INTO CORRESPONDING FIELDS OF TABLE v_nlei
WHERE einri EQ centrosanitario
AND falnr EQ episodio
AND lfdbew EQ movimiento
AND storn EQ ' '.

SORT v_nlei BY leist.

mysmb2
26/03/10, 12:10:45
la clave primaria debe ser de tipo i, p,dec,float16,f en tu caso el campo1 y por supuesto el campo2 debe ser numerico para que sumarize. verifica como tenes definida la tabla interna v_nlei

tate
26/03/10, 12:16:54
claro esque mi tabla interna es esta

DATA: BEGIN OF v_nlei OCCURS 0,
leist TYPE nlei-leist, "char de 10
imeng TYPE nlei-imeng, "numc de 4
tratado TYPE c,
END OF v_nlei.

Porque solo necesito esos datos de la tabla nlei.

y yo lo que quiero esque si hay mas de un campo LEIST igual, que me sume el campo IMENG, resultando que solo quedara un campo LEIST con la suma de los campos IMENG correspondientes.

yapbig
26/03/10, 12:47:44
Hace lo que necesitás diréctamente con el GROUP BY de la sentencia SELECT y listo ya te quedan los registros de la tabla interna agrupados y sumarizados. Tenes que agregar la función SUM al campo numérico correspondiente.

Saludos...

tate
26/03/10, 12:50:28
y como ago eso???

yapbig
26/03/10, 13:50:22
SELECT leist SUM( imeng )
FROM nlei
INTO CORRESPONDING FIELDS OF TABLE v_nlei
WHERE einri EQ centrosanitario
AND falnr EQ episodio
AND lfdbew EQ movimiento
AND storn EQ ' '
GROUP BY leist.


Saludos...

tate
29/03/10, 07:00:23
Buenas.
No puedo hacer ese SUM( imeng ),
ya que en la tabla esta definido com NUMC de 4, asi que no se como hacerlo.

Seguro que es una tonteria pero esque no se como hacerlo.

zonanet
29/03/10, 16:07:51
Hola, tengo esta tabla interna:
campo1 campo2
1| 0000000001 | 0002 | |
2| 0000000001 | 0001 | |
3| 0000000017 | 0001 |

lo que quiero esque si el campo 1 hay repetido, que me lo saque en una linea y me sume el campo2, quedando asi:


campo1 campo2
1| 0000000001 | 0003 |
2| 0000000017 | 0001 |

Prueba así:

sort Tabla_interna.
collect Tabla_interna.