Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-11-2006
Ricsato Ricsato is offline
Miembro
 
Registrado: oct 2003
Ubicación: Mexicali, Mexico
Posts: 72
Poder: 21
Ricsato Va por buen camino
Query Anidado

Necesito que alguien me ayude a optener un query aninado, que no se como relacionarlo entre si, tengo 3 tablas PAGOS, DPAGOS y CLIENTES:

SELECT Cli_Nombre, pag_tipocredito, Pag_Total, SUM(Dpg_Abono) AS Total_Abonado FROM Dpagos DPG
LEFT JOIN Pagos Pag ON Pag.Pag_Folio = Dpg.Dpg_Folio AND
Pag.Pag_RelCobro = Dpg.Dpg_RelCobro
LEFT JOIN Clientes Cli ON Cli.Cli_Codigo = Pag.Pag_Empresa
WHERE Pag_estatus = 0
GROUP BY Cli_Nombre, pag_tipocredito, Pag_Total
ORDER BY Cli_Nombre

Lo cual me regresa los siguientes datos:
cli_nombre -- pag_tipocredito -- pag_total -- total_abonado
--------------------------------------------------------------------------
CALIBAJA ------- 1 ------ 950 ------ 79.17
CALIBAJA ------- 1 ------ 1,500 ------ 120.00
COMSA ------- 1 ------ 800 ------ 85.15
COMSA ------- 1 ------ 400 ------ 100.00
TIMSA ------- 1 ------ 1,000 ------ 150.00
TIMSA ------- 1 ------ 900 ------ 850.00
--------------------------------------------------------------------------

obteniendo estos datos del Query de arriba, necesito ahora con esta informacion anidar otro query para que me regrese solo la siguiente informacion, sumandome las columnas numericas:

cli_nombre --- pag_total --- total_abonado
-----------------------------------------------------------
CALIBAJA ---- 2450 ----- 199.17
COMSA ---- 1200 ----- 185.15
TIMSA -----1900 ----- 1000.00

Entiendo que la clausula inicial seria

Select Cli_Nombre, SUM(Pag_Total), SUM(Total_Abonado) FROM Dpagos
Where ( ...primer query... )

Aqui, es donde no se como hacer el segundo filtrado en (..primer query...), como puedo hacer anidado ambos querys y me de el resultado que espero?

Saludos desde Mexicali, B.C., Mexico

Última edición por Ricsato fecha: 06-11-2006 a las 21:07:35.
Responder Con Cita
  #2  
Antiguo 06-11-2006
sinalocarlos sinalocarlos is offline
Miembro
 
Registrado: sep 2006
Posts: 152
Poder: 18
sinalocarlos Va por buen camino
Buen dia Ricsato

podrias probar con:

Código SQL [-]
Select Cli_Nombre,  SUM(Pag_Total), SUM(Total_Abonado) from
(
  SELECT Cli_Nombre, pag_tipocredito, Pag_Total, SUM(Dpg_Abono) AS Total_Abonado 
  FROM Dpagos DPG  LEFT JOIN Pagos Pag ON Pag.Pag_Folio = Dpg.Dpg_Folio AND
  Pag.Pag_RelCobro = Dpg.Dpg_RelCobro
  LEFT JOIN Clientes Cli ON Cli.Cli_Codigo = Pag.Pag_Empresa
  WHERE Pag_estatus = 0  GROUP BY Cli_Nombre, pag_tipocredito, Pag_Total
) t1
GROUP BY Cli_Nombre
ORDER BY Cli_Nombre

a mi me funciona, lo dejo a consideracion de los gurus del foro otro metodo mejor

Saludos desde Tijuana BC Mexico

PD.
yo uso SQL server 2000 no se si tu motor soporte lo anterior

Última edición por sinalocarlos fecha: 06-11-2006 a las 21:35:48.
Responder Con Cita
  #3  
Antiguo 06-11-2006
Ricsato Ricsato is offline
Miembro
 
Registrado: oct 2003
Ubicación: Mexicali, Mexico
Posts: 72
Poder: 21
Ricsato Va por buen camino
Marca Error

Hola amigo tijuanense, gracias por tu respuesta, pero fijate que añadir lo que me propones me marca el SQL Server 2000 el siguiente mensaje de error:

"An Order by clause is invalid in views, derivaded tables, and subqueries unless top is also specified"
Responder Con Cita
  #4  
Antiguo 06-11-2006
sinalocarlos sinalocarlos is offline
Miembro
 
Registrado: sep 2006
Posts: 152
Poder: 18
sinalocarlos Va por buen camino
fijate que no le haya quedado un order by en el select que forma la tabla
si te sigue marcando lo mismo postea el query para ver que pudiese ser
Responder Con Cita
  #5  
Antiguo 06-11-2006
Ricsato Ricsato is offline
Miembro
 
Registrado: oct 2003
Ubicación: Mexicali, Mexico
Posts: 72
Poder: 21
Ricsato Va por buen camino
Gracias

Si tienes razon, era el ORDER BY, que estaba dentro de la clausula del parentesis, gracias!!!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como hacer referencia a un query dentro de otro query? JuanBCT SQL 2 05-09-2006 18:35:25
Select anidado erika.martinez SQL 2 02-02-2006 12:19:57
query dentro de query jonmendi SQL 3 29-07-2005 15:13:33
Select anidado ( Select from select ) Malon Firebird e Interbase 1 05-10-2004 04:14:38
el USES UNIT anidado puede causar problemas? pepe2000 Varios 3 19-12-2003 16:34:22


La franja horaria es GMT +2. Ahora son las 18:44:35.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi