Consulta en SQL Server

Hola. Tengo hecha esta consulta en access:
SELECT Sum(SumaDedebe) AS SumaFinalDebe, Sum(SumaDehaber) AS SumaFinalHaber
FROM(
SELECT Sum([10t2006].debe) AS SumaDedebe, Sum([10t2006].haber) AS SumaDehaber,
[10t2006].fecha,[10t2006].cuentaContable
FROM [10t2006]
GROUP BY [10t2006].fecha, [10t2006].cuentaContable
HAVING ((DAY([10t2006].fecha)>=1)) AND ((MONTH([10t2006].fecha)=1))
AND ((([10t2006].cuentaContable) Like '572%')));
Resulta que en sql server no me funciona porque no me deja hacer consultas del tipo select from (select).
¿Alguna idea?
Gracias por adelantado

1 respuesta

Respuesta
1
Bien, vayamos por partes, lo primero que tienes que hacer cuando trabajas con subquerys es SER ORDENADO y trabajar desde dentro hacia fuera, es bueno probar por partes la query para ver si funciona.
1° Parte.- En esta parte de la Query estas realizando dos sumas de acuerdo al criterio del group by, hasta aquí todo bien.
SELECT Sum([10t2006].debe) AS SumadeDebe, Sum([10t2006].haber) AS SumaDehaber,
[10t2006]. Fecha,[10t2006]. Cuenta
FROM [10t2006]
GROUP BY [10t2006].fecha, [10t2006].cuenta
2° Parte.- Aquí empiezan tus problemas, estas haciendo abuso de los paréntesis en el having, quite todos los que estaban y solo deje uno que me agrupara los tres criterios, además le puse un alias a las query " V", que me ayudará a obtener los datos de esta subconsulta.
SELECT Sum([10t2006].debe) AS SumadeDebe, Sum([10t2006].haber) AS SumaDehaber,
[10t2006]. Fecha,[10t2006]. Cuenta
FROM [10t2006]
GROUP BY [10t2006].fecha, [10t2006].cuenta
HAVING (DAY([10t2006].fecha)>=1 AND MONTH([10t2006].fecha)=1 AND [10t2006].cuenta Like '572%')) V
3° Parte.- Así debiera quedar la query al final. Si te das cuenta en tu query original estas sumando dos veces, no tienes para que hacer esto, los valores ya están sumados dentro, solo tienes que obtenerlos con el nombre correspondiente, observa la función del Alias cuando se trabaja con subquerys.
SELECT V.SumadeDebe as SumaFinalDebe, V.SumadeHaber as SumaFinalHaber FROM (
SELECT Sum([10t2006].debe) AS SumadeDebe, Sum([10t2006].haber) AS SumaDehaber,
[10t2006]. Fecha,[10t2006]. Cuenta
FROM [10t2006]
GROUP BY [10t2006].fecha, [10t2006].cuenta
HAVING (DAY([10t2006].fecha)>=1 AND MONTH([10t2006].fecha)=1 AND [10t2006].cuenta Like '572%')) V

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas