Problema con consulta

Hola experto, desde ya muchas gracias.
Tengo la siguiente consulta:
SELECT Agrupado.Codigo, Sum(Agrupado.SDebe) AS SumaDebe, Sum(Agrupado.SHaber) AS SumaHaber
FROM [
(SELECT Codigo, Sum(Debe) AS SDebe, Sum(Haber) As SHaber
FROM AC INNER JOIN ACXCostos ON AC.IdAsientoContable = ACXCostos.IdAsientoContable WHERE AC.Eliminado = FALSE AND Month(Fecha) = MES AND Year(Fecha) = ANIO GROUP BY Codigo)
UNION
(SELECT Codigo, Sum(Debe) AS SDebe, Sum(Haber) As SHaber FROM Cheques WHERE Month(Fecha) = MES AND Year(Fecha) = ANIO GROUP BY Codigo)
union
(SELECT Codigo, Sum(Monto) AS SDebe, 0 AS SHaber FROM Amortizacion WHERE Eliminado = FALSE AND Month(FechaAmort) = MES AND Year(FechaAmort) = ANIO GROUP BY Codigo)
].
Has Agrupado
GROUP BY Codigo;
En Access 2000, la cual funciona EXCELENTE si los valores de SDebe y SHaber de las 3 cubconsultas son distintos, ejemplo, obtendo el resultaddo: Código = 1 SDebe = 100 SHaber = 100 si en las 3 subconsultas obtuve 1, 20, 30 y 1, 10, 10 y 1, 70, 60.
El problema surge cuando para un mismo código obtengo en 2 subconsultas un mismo valor para la columna SDebe o SHaber, por ejemplo si obtengo lo siguiente en las 3 subconsultas: 1, 20, 30 y 1, 10, 10 y 1, 70, 10 (donde éste 10 es igual al de la 2º subconsulta), no me lo acumula, o sea, esas 3 subconsultas me dan por resultado: 1, 100, 40 (el 40 se obtiene de 30 + 10 + ¿10? Que no acumula!)
Espero haber sido claro y que puedas ayudarme.
Gracias, Hink!

2 respuestas

Respuesta
1
Algo de la ayuda de microsoft
Obtener registros duplicados en una consulta de unión
La siguiente consulta de unión utiliza la instrucción UNION ALL para extraer todos los registros, incluyendo los registros duplicados:
SELECT [NombreCompañía], [Ciudad]
FROM [Proveedores]
UNION ALL SELECT [NombreCompañía], [Ciudad]
FROM [Clientes];
Que te pasa si despues del SELECT le pones ALL en todos los SELECT
es decir SELECT ALL
Respuesta
1
Prueba utilizando la clausula DISTINCT
SELECT DISTINCT ....

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas