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

[SOLUCIONADO] GROUP BY en varias tablas

Estas en el tema de GROUP BY en varias tablas en el foro de Oracle en Foros del Web. ¿Es posible? Comento mi problema: tengo tres tablas, en todas ellas tengo un campo dado al cual debo sumar todos los valores agrupados por fecha, ...
  #1 (permalink)  
Antiguo 06/08/2012, 09:32
Avatar de Erick_Lucas  
Fecha de Ingreso: enero-2009
Ubicación: Manta
Mensajes: 47
Antigüedad: 15 años, 11 meses
Puntos: 1
GROUP BY en varias tablas

¿Es posible?

Comento mi problema: tengo tres tablas, en todas ellas tengo un campo dado al cual debo sumar todos los valores agrupados por fecha, por ejemplo

| FECHA | SUM(VALOR) |
| 5/1/2012 | 25347.90 |
| 5/2/2012 | 24810.37 |

Puedo lograrlo con las cada una de las tablas pero por separado, pero necesito lograr que los valores de las columnas de las 3 tablas se muestren agrupadas por la misma fecha, dando un total de 4 columnas, la primera de fecha y las otras tres con los valores sumados.

Espero puedan ayudarme.
  #2 (permalink)  
Antiguo 06/08/2012, 09:50
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: GROUP BY en varias tablas

Es posible, pero ¿qué cosa relaciona a las tablas entre sí? ¿Sólo la fecha?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 06/08/2012, 10:12
Avatar de Erick_Lucas  
Fecha de Ingreso: enero-2009
Ubicación: Manta
Mensajes: 47
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: GROUP BY en varias tablas

Bueno, el contenido de las tablas es el siguiente:

Es un sistema de facturación, la primera tabla tiene la cabecera de las ventas, se llama FA_VENTAS, se relaciona por el codigo de la venta llamado ve_codigo a la tabla FA_RECPAG en donde están guardadas las formas de pago en de las ventas.
Por ejemplo, se hizo una factura de $ 25.00 en donde se pagaron $ 10 en efectivo y $ 15 a crédito, en FA_VENTAS está la tupla de la venta, mientras que en FA_RECPAG están dos tuplas, una con los $ 10 en efectivo y la otra con los $ 15 a crédito.

La tercera tabla es la de CC_MOVIM en donde se almacenan todos los créditos, esta creo que no tiene relación con las anteriores mencionadas. La fecha es hasta el momento lo único que relaciona a las 3 tablas.
  #4 (permalink)  
Antiguo 08/08/2012, 06:12
Avatar de Drako_18  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 505
Antigüedad: 19 años, 7 meses
Puntos: 16
Respuesta: GROUP BY en varias tablas

1º) Porqué no exportas el código de la venta a la tabla de los créditos??
Ya que un crédito pertenecerá a una venta ¿no? (Piénsalo...)

2º) Si quieres sacar 2 campos de distintas tablas agrupándolos por X columna... Hechale un vistazo a este ejemplo que se me ha ocurrido...
SELECT SUM(IMPORTE), FECHA
FROM (
SELECT 12 IMPORTE, TO_DATE('21/02/1986') FECHA FROM DUAL
UNION
SELECT 11, TO_DATE('21/02/1987') FROM DUAL
UNION
SELECT 13, TO_DATE('21/02/1989') FROM DUAL
UNION
SELECT 10, TO_DATE('21/02/1986') FROM DUAL
UNION
SELECT 8, TO_DATE('21/02/1981') FROM DUAL
)
GROUP BY FECHA

Si te fijas, todas las tablas estarían dentro del FROM exterior, y usando en el select exterior el nombre de los campos de la 1º tabla, en la que le puedes poner unos alias si bien lo prefieres para mejor compresión del código.
__________________
Rubén Espada
Desarrollador full stack .Net (Angular + JS + .Net Core)

Última edición por Drako_18; 08/08/2012 a las 06:14 Razón: Añadir comentario
  #5 (permalink)  
Antiguo 08/08/2012, 13:13
Avatar de Erick_Lucas  
Fecha de Ingreso: enero-2009
Ubicación: Manta
Mensajes: 47
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: GROUP BY en varias tablas

Muchas gracias, aunque a decir verdad no entendí bien el código que propusiste, tuve que irme por otro lado. Aprovecho para comentar lo que necesitaba (porque lo he logrado de otra manera).

Buscaba obtener 6 grupos de valores de diferentes bases de datos (2 de SQL Server y 4 de Oracle).

En SQL Server, buscaba:

1. Ventas totales
2. Ventas a crédito

Mientras que en Oracle requería de
1. Ventas totales
2. Ventas en forma de pago
3. Ventas a crédito
4. Créditos en cartera

Todo esto agrupados por un rango de fecha establecido. Un Sistema de Punto de Venta realiza transacciones en SQL Server y las mismas son migradas a Oracle, por lo que yo también requiero saber si la migración ha sido exitosa, en este caso el flujo es el siguiente:

1. Las ventas en ORACLE deben ser iguales a las formas de pago en ORACLE.
2. Las ventas en ORACLE deben ser iguales a las ventas en SQL SERVER.
3. Las ventas a crédito en ORACLE deben ser iguales a los créditos en cartera en ORACLE.
4. Las ventas a crédito en ORACLE deben ser iguales a las ventas a crédito en SQL SERVER.

Una vez cumplido todo esto, quiere decir que la migración ha sido existosa.

Este es mi módulo para obtener el monto de las ventas por rango de fecha y verificar su migración, los datos se obtienen al hacer click en el botón Obtener Resultados:



Como se ve, en ORACLE las ventas totales no son iguales a las ventas en forma de pago, por lo que no ha existido una correcta migración de datos, así que el visto no se marca.

Gracias por su ayuda

Etiquetas: group, tabla, tablas
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 10:47.