Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

subconsulta sql

Estas en el tema de subconsulta sql en el foro de Bases de Datos General en Foros del Web. Hola, estoy tratando de hacer una consulta y me tira un mensaje de error que dice "esta subconsulta puede devolver como máximo un registro", la ...
  #1 (permalink)  
Antiguo 09/04/2014, 11:49
 
Fecha de Ingreso: abril-2014
Mensajes: 5
Antigüedad: 10 años
Puntos: 0
subconsulta sql

Hola, estoy tratando de hacer una consulta y me tira un mensaje de error que dice "esta subconsulta puede devolver como máximo un registro", la instrucción SQL es la siguiente:


Código SQL:
Ver original
  1. SELECT asientos.cta,
  2. (SELECT SUM([A.debe]-[A.haber]) FROM asientos AS A WHERE ((A.fecha)<#2/1/2014#) GROUP BY A.cta) AS sdo_inicial,
  3. SUM(asientos.debe) AS SumaDedebe, SUM(asientos.haber) AS SumaDehaber, SUM([debe]-[haber]+[sdo_inicial]) AS Total
  4. FROM asientos
  5. WHERE ((asientos.fecha)>=#2/1/2014# AND (asientos.fecha)<=#12/31/2014#)
  6. GROUP BY asientos.cta;
copio un ejemplo de la tabla asientos:
fecha asto cta debe haber
03/09/2013 80 423003 232,5 0
03/09/2013 80 111101 0 232,5
03/09/2013 81 422109 5 0
03/09/2013 81 111101 0 5
04/09/2013 82 211101 334,09 0
04/09/2013 82 111101 0 334,09
04/09/2013 83 211101 485 0
04/09/2013 83 111101 0 485
09/09/2013 84 422109 5 0
09/09/2013 84 111101 0 5
09/09/2013 85 422109 5 0
09/09/2013 85 111101 0 5
09/09/2013 86 422109 36 0
09/09/2013 86 111101 0 36
10/09/2013 88 422109 31 0
10/09/2013 88 111101 0 31
12/09/2013 89 211101 66,74 0
12/09/2013 89 111101 0 66,74

lo que quiero obtener es: la cuenta, el saldo inicial (es lo que quiero obtener con la subconsulta, que son los movimientos anteriores a febrero), debe y haber (movimientos a partir de febrero) y el saldo que es la suma y resta de las anteriores.
no se donde esta el error, si alguno me puede ayudar desde ya muchas gracias.

Saludos.

Alejo

Última edición por gnzsoloyo; 09/04/2014 a las 12:59
  #2 (permalink)  
Antiguo 09/04/2014, 12:50
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: subconsulta sql

esto te regresa un registro por cada cuenta:

SELECT Sum([A.debe]-[A.haber]) FROM asientos as A WHERE ((A.fecha)<#2/1/2014#) GROUP BY A.cta

que es la sumatoria, eso no lo puedes incluir en un subquery como lo estas manejando, lo que podrias hacer es esto:

Código SQL:
Ver original
  1. SELECT asientos.cta,t2.saldo_inicial,  
  2. SUM(asientos.debe) AS SumaDedebe, SUM(asientos.haber) AS SumaDehaber, SUM([debe]-[haber]+[sdo_inicial]) AS Total
  3. FROM asientos
  4. LEFT JOIN
  5.  (
  6. SELECT SUM([A.debe]-[A.haber]) AS saldo_inicial,a.cta FROM asientos AS A WHERE ((A.fecha)<#2/1/2014#) GROUP BY A.cta
  7.  
  8. ) AS t2 ON (asientos.cta=t2.cta)
  9. WHERE ((asientos.fecha)>=#2/1/2014# AND (asientos.fecha)<=#12/31/2014#)
  10. GROUP BY asientos.cta;

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 09/04/2014, 13:08
 
Fecha de Ingreso: abril-2014
Mensajes: 5
Antigüedad: 10 años
Puntos: 0
Respuesta: subconsulta sql

Muchas gracias por tu respuesta al ejecutar tu consulta en el access me aparece el siguiente error: "Ha intentado ejecutar una consluta que no incluye la expresión especificada 'saldo_inicial' como parte de una función de agregado". no se a que se debe. Desde ya muchas gracias.

Saludos.

Alejo
  #4 (permalink)  
Antiguo 09/04/2014, 13:41
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: subconsulta sql

me lleva, la instruccion que te di es para sql server........
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 09/04/2014, 14:09
 
Fecha de Ingreso: abril-2014
Mensajes: 5
Antigüedad: 10 años
Puntos: 0
Respuesta: subconsulta sql

Ok, igual acabo de descubrir otro inconveniente tendría que ser una unión de las consultas porque con la instrucción como estaba si una cuenta no tuvo movimientos en el mes pero si tiene saldo inicial no me trae el saldo inicial. Como debería hacer en ese caso?
Muchas gracias.

Saludos.

Alejo

Etiquetas: siguiente, sql, subconsulta, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:11.