MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 14/05/07, 13:56:17
mercedesmmpp mercedesmmpp is offline
Junior Member
 
Fecha de Ingreso: oct 2006
Mensajes: 5
Unhappy select

Buenas..

Quiero saber cual es el potencial de las select, pues pretendo hacer esta consulta.

select sum(campo_cantidad), distinct (campofecha+4(2))
from tabla
where
condiciones.

he intentado varias cosas, pero sin exito..

¿Alguien sabe como realizarlo usando Select?

Responder Con Cita
  #2  
Viejo 14/05/07, 14:22:24
Avatar de davidsap
davidsap davidsap is offline
Member
 
Fecha de Ingreso: abr 2006
Mensajes: 85
No sé a qué te refieres exáctamente con "el potencial", pero te cuento:

No tengo ni idea de cómo hacerlo en una sóla orden pero puedes meterlo dentro de un SELECT - END SELECT. Esto ralentiza un poco la búsqueda, pero salvo que sean cientos de miles de registros tampoco tiene mucha importancia. La idea sería esto:

select campo_cantidad, campofecha
from tabla
where condiciones.

at new campofecha+4(2))
ir sumando campo_cantidad en una variable
endat
endselect

Algo así no sé. Espero que te sirva de ayuda o al menos que no te haya liado más.
__________________
Un saludo
Responder Con Cita
  #3  
Viejo 15/05/07, 02:25:06
Avatar de abapedro
abapedro abapedro is offline
Member
 
Fecha de Ingreso: mar 2007
Mensajes: 83
Smile

Hola,

Posiblemente se pueda llegar a conformar una frase en "open SQL" empleando SELECT para que en una sola frase se obtenga todo el efecto requerido (filtrado por condición y acumulación en cambio del valor de una parte del campo de fecha).

Mi experiencia es que las frases open SQL complejas pueden resultar muy ineficientes. Imagino que el pseudo-compilador que traduce de open SQL al SQL real de la base de datos (Oracle, MySQL, Informix o la que se esté empleando) no necesariamente produce el código SQL real mas eficiente. Resulta mejor no ponerle las cosas tan dificiles al traductor y darle varias frases mas claras y menos ambiciosas.

Como ejemplo, una frase con join de varias tablas (una de las cuales tiene mas de un millón de registros) estaba llevando a que el programa que la empleaba durara mas de 3 dias continuos (pasó de 80 horas sin terminar). Cuando dividimos la frase en varias frases equivalentes llevamos el tiempo a 10 o 12 horas.

Supongo que es como muchas cosas en la vida:

El que mucho abarca, poco aprieta
Responder Con Cita
  #4  
Viejo 21/05/07, 12:49:35
mercedesmmpp mercedesmmpp is offline
Junior Member
 
Fecha de Ingreso: oct 2006
Mensajes: 5
Muchas gracias por vuestras aportaciones, yo lo he resuelto asi, pero esperaba, que alguien me indicará la funciones (avg, max, min....month, day, etc) que puede tener el select en este lenguaje.

REFRESH t_anep.

error = 0.
SELECT *
INTO CORRESPONDING FIELDS OF e_anep
FROM anep WHERE
bukrs = t_anla-bukrs AND
anln1 = t_anla-anln1 AND
anln2 = t_anla-anln2 AND
gjahr = e_cuadro-gjahr AND
afabe = 01.
e_anep-mesbzdat = e_anep-bzdat+4(2).
APPEND e_anep TO t_anep.
v_invers = 0.
ENDSELECT.

IF sy-subrc <> 0.
error = 1.
ENDIF.

sumanbtr = 0.
SORT t_anep.
LOOP AT t_anep INTO e_anep.
IF v_mes = e_anep-bzdat+4(2).
sumanbtr = sumanbtr + e_anep-anbtr.
ENDIF.
ENDLOOP.
Responder Con Cita
  #5  
Viejo 21/05/07, 15:12:21
Avatar de prendtorff
prendtorff prendtorff is offline
Junior Member
 
Fecha de Ingreso: ago 2006
Mensajes: 24
Thumbs up mas performance

la solucion que encontraste es buena, pero seria mucho mas performante si en vez de hacer un
SELECT *
FROM tabla
INTO CORRESPONDING FIELDS OF i_tabla
WHERE (condiciones)
ENDSELECT.

haces un
SELECT (solo los campos que necesitas)
FROM tabla
INTO TABLE i_tabla (tabla definida con solo los campos que necesitas
en el orden que los seleccionas)
WHERE (condiciones).

y luego loopeas por i_tabla sumando tus totales.



Espero esto te sirva....


Saludos!

Pablo.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 22:14:00.


www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web