Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Select de un Union All?? (https://www.clubdelphi.com/foros/showthread.php?t=30628)

Luana 11-04-2006 22:58:25

Select de un Union All??
 
Hola a todos,estoy utilizando Delphi 6, la BD está hecha en Access y utilizo los componentes ADO; la consulta es la siguiente.

Código SQL [-]
SELECT C.Codigo, Sum(FA.Total) AS SumaTotal
FROM Clientes AS C, Facturas_Ventas_A AS FA
WHERE (C.Eliminado =False) AND (C.Codigo= FA.Codigo_Cliente) AND (C.Categoria= :unaCategoria) AND (FA.Fecha Between :FecMin And :FecMax)
GROUP BY C.Codigo
 
UNION ALL SELECT C.Codigo, Sum(FB.Total) AS SumaTotal
FROM Clientes AS C, Facturas_Ventas_B AS FB
WHERE (C.Eliminado = False) AND (C.Codigo = FB.Codigo_Cliente) AND (C.Categoria = :unaCategoria) AND (FB.Fecha Between :FecMin And :FecMax)
GROUP BY C.Codigo
 
UNION ALL SELECT C.Codigo, Sum(FC.Total) AS SumaTotal
FROM Clientes AS C, Facturas_Ventas_C AS FC
WHERE (C.Eliminado = False) AND (C.Codigo = FC.Codigo_Cliente) AND (C.Categoria = :unaCategoria) AND (FC.Fecha Between :FecMin And :FecMax)
GROUP BY C.Codigo

Lo que yo quisiera haceres que para un mismo codigo de cliente,se sumaran los campos FA.SumaTotal + FB.SumaTotal + FC.SumaTotal.

Bueno, si alguien puede ayudarme desde ya muchas gracias. Saludos.

Luana

Luana 17-04-2006 16:24:07

una Solución
 
Hola a todos, mi problema lo solucioné realizando subconsultas, no es tan rápida como el resto de las consultas, pero me sirve.

La nueva consulta es:

Código SQL [-]
SELECT C.Codigo, C.Nombre, iif((SELECT Sum(Total) FROM Facturas_Ventas_A 
WHERE (C.Codigo = Codigo_Cliente) AND (Fecha Between :FecMin And :FecMax) 
GROUP BY Codigo_Cliente) IS NULL, 0,(SELECT Sum(Total) FROM Facturas_Ventas_A 
WHERE (C.Codigo = Codigo_Cliente) AND (Fecha Between :FecMin And :FecMax) 
GROUP BY Codigo_Cliente)) + iif((SELECT Sum(Total) FROM Facturas_Ventas_B 
WHERE (C.Codigo = Codigo_Cliente) AND (Fecha Between :FecMin And :FecMax) 
GROUP BY Codigo_Cliente) IS NULL, 0,(SELECT Sum(Total) FROM Facturas_Ventas_B 
WHERE (C.Codigo = Codigo_Cliente) AND (Fecha Between :FecMin And :FecMax) 
GROUP BY Codigo_Cliente)) + iif((SELECT Sum(Total) FROM Facturas_Ventas_C 
WHERE (C.Codigo = Codigo_Cliente) AND (Fecha Between :FecMin And :FecMax) 
GROUP BY Codigo_Cliente) IS NULL, 0,(SELECT Sum(Total) FROM Facturas_Ventas_C 
WHERE (C.Codigo = Codigo_Cliente) AND (Fecha Between :FecMin And :FecMax) 
GROUP BY Codigo_Cliente)) AS SUMATOTAL
FROM Clientes AS C
WHERE (C.Eliminado=False) And (C.Categoria = :unaCategoria);

Esta consulta la necesito para mostrar los datos en un QReport, el campo
SUMTOTAL lo muesto en un QRDBText que me está mostrando los que son igual a cero, pero los que tienen un valor no me muestra nada.

Bueno, si alquien sabe a que se puede deber esto agradecería su ayuda.

Luana


La franja horaria es GMT +2. Ahora son las 16:43:46.

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