Consulta para expertos de SQL
Publicado por Omar (3 intervenciones) el 17/02/2016 20:47:36
Buenas tardes compañeros, tengo la complicada tarea de hacer un reporte en crystal reports, a base de consultas SQL, pero existe un problema que yo creo ustedes me podran ayudar a resolverlo....
Tengo 2 tipos de Tablas:
Una donde están resumidos los pagos de los clientes y otra donde estan los productos que paga.
Lo complicado del asunto es que son muchos los datos por tal motivo para mayor control, se realizan una tabla por cada mes de de pagos, tanto de resumen y de descripcion.
Aparte de este "incombeniente" existe otro, que el cliente puede pagar con meses de retraso el credito que tenia, por ejemplo: en mayo tubo que haber pagado por 150 productos, pero lo pago hasta diciembre, y en diciembre pago la diferencia que le falto en junio y julio, y lo de diciembre lo pago hasta marzo del año siguiente, por lo que hay dos fechas representada en meses, mes que paga y cuando lo paga.
entonces tenemos una base de datos de la sigiente forma:
ResPag012001 (resumen de los pagos hechos en enero)
ResPag022001 (resumen de los pagos hechos en febrero)
ResPag032001 (resumen de los pagos hechos en marzo)
ResPag042001 (resumen de los pagos hechos en abril)
ResPag052001 (resumen de los pagos hechos en mayo)
......
......
.....
asi hasta llegar a
ResPag122001 (resumen de los pagos hechos en diciembre)
DetPag012001 (detalle de los pagos hechos en enero)
DetPag022001 (detalle de los pagos hechos en febrero)
DetPag032001 (detalle de los pagos hechos en Marzo)
.......
.......
.......
DetPag122001 (detalle de los pagos hechos en Diciembre)
Necesito saber cuantos fueron los productos que pago en el año 2001, el cliente N° 0125614.
Si lo hago manual así quedaría:
Primero busco los pagos que realizo en las tablas resumen, por lo que hagio la siguiente consulta:
Select * from ResPag012001 where Cliente = 'C0125614'
Select * from ResPag022001 where Cliente = 'C0125614'
Select * from ResPag032001 where Cliente = 'C0125614'
....
....
....
Select * from ResPag122001 where Cliente = 'C0125614'
Con lo cual me trae:
Cliente | Importe | mes del pago | periodo que paga | clave del pago |
C0125614 $999999 012001 012001 P56242
C0125614 $899999 022001 012001 P42361
C0125614 $100000 032001 022001 P56875
C0125614 $999999 122001 032001 P68752
C0125614 $999999 022002 042001 P63458
Con lo cual ya puedo saber en cuales tablas de detalle buscar, y evitar saturar el sistema buscando en todas las tablas.....
DetPag012001
DetPag022001
DetPag032001
DetPag122001
DetPag022002
Select * from DetPag012001 where Clave_Pago='P56242'
y asi sucesivamente.
Si esto lo hago en excel, pues primero busco en la tabla de resumen y con los resultados realizo las consultas para buscar en las tablas de detalle, pero ahora quiero realizar las consultas a partir de los resultados del primer paso en una sola consulta, sin necesidad de construir las formulas en excel.......
Alguien me podría ayudar por favor..........
Tengo 2 tipos de Tablas:
Una donde están resumidos los pagos de los clientes y otra donde estan los productos que paga.
Lo complicado del asunto es que son muchos los datos por tal motivo para mayor control, se realizan una tabla por cada mes de de pagos, tanto de resumen y de descripcion.
Aparte de este "incombeniente" existe otro, que el cliente puede pagar con meses de retraso el credito que tenia, por ejemplo: en mayo tubo que haber pagado por 150 productos, pero lo pago hasta diciembre, y en diciembre pago la diferencia que le falto en junio y julio, y lo de diciembre lo pago hasta marzo del año siguiente, por lo que hay dos fechas representada en meses, mes que paga y cuando lo paga.
entonces tenemos una base de datos de la sigiente forma:
ResPag012001 (resumen de los pagos hechos en enero)
ResPag022001 (resumen de los pagos hechos en febrero)
ResPag032001 (resumen de los pagos hechos en marzo)
ResPag042001 (resumen de los pagos hechos en abril)
ResPag052001 (resumen de los pagos hechos en mayo)
......
......
.....
asi hasta llegar a
ResPag122001 (resumen de los pagos hechos en diciembre)
DetPag012001 (detalle de los pagos hechos en enero)
DetPag022001 (detalle de los pagos hechos en febrero)
DetPag032001 (detalle de los pagos hechos en Marzo)
.......
.......
.......
DetPag122001 (detalle de los pagos hechos en Diciembre)
Necesito saber cuantos fueron los productos que pago en el año 2001, el cliente N° 0125614.
Si lo hago manual así quedaría:
Primero busco los pagos que realizo en las tablas resumen, por lo que hagio la siguiente consulta:
Select * from ResPag012001 where Cliente = 'C0125614'
Select * from ResPag022001 where Cliente = 'C0125614'
Select * from ResPag032001 where Cliente = 'C0125614'
....
....
....
Select * from ResPag122001 where Cliente = 'C0125614'
Con lo cual me trae:
Cliente | Importe | mes del pago | periodo que paga | clave del pago |
C0125614 $999999 012001 012001 P56242
C0125614 $899999 022001 012001 P42361
C0125614 $100000 032001 022001 P56875
C0125614 $999999 122001 032001 P68752
C0125614 $999999 022002 042001 P63458
Con lo cual ya puedo saber en cuales tablas de detalle buscar, y evitar saturar el sistema buscando en todas las tablas.....
DetPag012001
DetPag022001
DetPag032001
DetPag122001
DetPag022002
Select * from DetPag012001 where Clave_Pago='P56242'
y asi sucesivamente.
Si esto lo hago en excel, pues primero busco en la tabla de resumen y con los resultados realizo las consultas para buscar en las tablas de detalle, pero ahora quiero realizar las consultas a partir de los resultados del primer paso en una sola consulta, sin necesidad de construir las formulas en excel.......
Alguien me podría ayudar por favor..........
Valora esta pregunta


0