Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Agrupar datos en la misma celda

Estas en el tema de Agrupar datos en la misma celda en el foro de Oracle en Foros del Web. Hola soy nuevo en el foro, y tengo un problema con una consulta SQL. En la consulta obtengo basicamente datos sobre ordenes de compras, pero ...
  #1 (permalink)  
Antiguo 30/09/2009, 10:44
 
Fecha de Ingreso: septiembre-2009
Ubicación: Trujillo
Mensajes: 38
Antigüedad: 14 años, 6 meses
Puntos: 0
Agrupar datos en la misma celda

Hola soy nuevo en el foro, y tengo un problema con una consulta SQL.
En la consulta obtengo basicamente datos sobre ordenes de compras, pero una orden de compra puede tener varias fechas de entrega, y ahi es donde surge mi problema. Al querer poner todos los datos de la misma orden de compra (asi tengan diferentes fechas de entrega) en la misma celda.
A continuacion esta mi consulta SQL:

SELECT FPBPOHD_CODE "#ORDN",
TO_CHAR(FPBPOHD_PO_DATE,'DD/MM') "FECHA",
SPRIDEN_LAST_NAME || ' ' || SPRIDEN_FIRST_NAME || ' ' || SPRIDEN_MI "PROVEEDOR",
FTVORGN_TITLE "ORGANIZACION",
SUM((FPRPODT_QTY * FPRPODT_UNIT_PRICE + FPRPODT_TAX_AMT - FPRPODT_DISC_AMT)) "SOLES",
TO_CHAR(FPBPOHD_REQD_DATE,'DD/MM') "PLAZO",
FG_UPAO_APE_NOM(FG_UPAO_GET_PIDM(SUBSTR(FPBPOHD_US ER_ID,3,9)),'O') "NOMBRE",
TO_CHAR(FPRRCDT_RCVD_DATE,'DD/MM') "RECIBIDO",
FPBRCHD_CODE "GUIA",
TO_CHAR(FPBRCHD_RCVD_DATE,'DD/MM') "SALIDA"
FROM FPBPOHD,FPRPODT,SPRIDEN,FTVCOMM,FTVORGN,FPRRCDT,FP BRCHD
WHERE FPBPOHD_PO_DATE >= :P_FECHA_INICIAL
AND FPBPOHD_PO_DATE <= :P_FECHA_FINAL
AND FPRPODT_POHD_CODE = FPRRCDT_POHD_CODE --
AND FPRRCDT_RCHD_CODE = FPBRCHD_CODE --
AND FPRPODT_ITEM = FPRRCDT_ITEM --
AND FPBPOHD_CODE = FPRPODT_POHD_CODE
AND FPBPOHD_CHANGE_SEQ_NUM IS NULL
AND FPBPOHD_VEND_PIDM = SPRIDEN_PIDM
AND FPRPODT_COMM_CODE = FTVCOMM_CODE
AND FPBPOHD_COAS_CODE = FTVORGN_COAS_CODE
AND FPBPOHD_ORGN_CODE = FTVORGN_ORGN_CODE
AND FTVORGN_EFF_DATE <= SYSDATE
AND FTVORGN_NCHG_DATE > SYSDATE
AND FPBPOHD_CANCEL_IND IS NULL
AND FPRPODT_CHANGE_SEQ_NUM IS NULL
AND SPRIDEN_CHANGE_IND IS NULL
AND FPBPOHD_COMPLETE_IND = 'Y'
AND FPBPOHD_CURR_CODE IS NULL
group by FPBPOHD_CODE, FPBPOHD_PO_DATE,
SPRIDEN_LAST_NAME || ' ' || SPRIDEN_FIRST_NAME || ' ' || SPRIDEN_MI,
FTVORGN_TITLE,FPBPOHD_REQD_DATE,FPBPOHD_USER_ID,
FPRRCDT_RCVD_DATE,FPBRCHD_CODE, FPBRCHD_RCVD_DATE;

Ojala puedan ayudarme.
  #2 (permalink)  
Antiguo 04/10/2009, 19:32
Avatar de 8vio  
Fecha de Ingreso: marzo-2008
Ubicación: Detras del monitor
Mensajes: 168
Antigüedad: 16 años
Puntos: 6
Respuesta: Agrupar datos en la misma celda

Primero que nada podrias especificar que datos quieres mostrar en realidad. Si vas a realizar un group by, solo vas a poder mostrar lo que te devuelvan funciones de grupos o los datos que agrupas.

Creo entender que quieres mostrar el numero de orden mas todo sus detalles. Lo que se me ocurre es que uses funciones del tipo grouping con rollup o cube. Con ellas lograrias mostrar un detalle general en una linea seguido de un detalle cada vez mas especifico.

Documentate un poco sobre el grouping y cualquier duda nos comentas.
  #3 (permalink)  
Antiguo 07/10/2009, 10:07
 
Fecha de Ingreso: septiembre-2009
Ubicación: Trujillo
Mensajes: 38
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Agrupar datos en la misma celda

Al final despues de noches y dias de busqueda, encontre una manera de como realizarlo, aunque no creo que sea la mas efectiva (pero me saco del apuro).
Lo que tuve que hacer fue crear un cursor, que recorra todos los datos y vaya concatenando los que debian salir en una linea.
Un trabajo muy muuuuuuuuuuuuuuuuuuuuuuuuuuuyyyy laboriozo, y como dije no me parece el mas efectivo.
  #4 (permalink)  
Antiguo 12/10/2009, 17:30
Avatar de 8vio  
Fecha de Ingreso: marzo-2008
Ubicación: Detras del monitor
Mensajes: 168
Antigüedad: 16 años
Puntos: 6
Respuesta: Agrupar datos en la misma celda

Jejeje si bastante, aunque si el resultado te lo muestra rapido no hay problema.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:59.