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

[SOLUCIONADO] Error al consultar con sub query

Estas en el tema de Error al consultar con sub query en el foro de Bases de Datos General en Foros del Web. Hola buen día lo que pasa que realizo una consulta donde quiero traer dos campos calculados que son las sumas de montos en base a ...
  #1 (permalink)  
Antiguo 25/04/2016, 13:19
Avatar de rubenx4  
Fecha de Ingreso: abril-2016
Mensajes: 2
Antigüedad: 8 años
Puntos: 0
Pregunta Error al consultar con sub query

Hola buen día lo que pasa que realizo una consulta donde quiero traer dos campos calculados que son las sumas de montos en base a dos claves la 231 y 232 la segunda consulta me da los valores pero el sub query me dice que no puede traer mas de un valor me podría alguien apoyar para re definir mi query, lo que quiero es traer los dos campos calcupados para cada clave(rpe).

Gracias.

Código SQL:
Ver original
  1. SELECT rpe, (SELECT SUM(importe) FROM b_cijubi,b_parame WHERE  cl_afect='231'
  2. AND b_parame.numnomin=b_cijubi.numnomin AND fe_teper BETWEEN '2010-11-10' AND '2011-11-10'
  3.  GROUP BY rpe),
  4.     SUM(importe) FROM b_cijubi,b_parame WHERE b_parame.numnomin=b_cijubi.numnomin AND
  5. fe_teper BETWEEN '2010-11-10' AND '2011-11-10' AND cl_afect='232' GROUP BY rpe
  #2 (permalink)  
Antiguo 25/04/2016, 13:31
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Error al consultar con sub query

El problema es simple: La subconsulta está en el SELECT de la consulta mayor, y para qu efuncione alli debería devolver un único valor, algo imposible si estás agrupando por otro.
Código SQL:
Ver original
  1. SELECT
  2.     rpe,
  3.     (SELECT
  4.             SUM(importe)
  5.         FROM
  6.             b_cijubi,
  7.             b_parame
  8.         WHERE
  9.             cl_afect = '231'
  10.                 AND b_parame.numnomin = b_cijubi.numnomin
  11.                 AND fe_teper BETWEEN '2010-11-10' AND '2011-11-10'
  12.         GROUP BY rpe),
  13.     SUM(importe)
  14. FROM
  15.     b_cijubi,
  16.     b_parame
  17. WHERE
  18.     b_parame.numnomin = b_cijubi.numnomin
  19.         AND fe_teper BETWEEN '2010-11-10' AND '2011-11-10'
  20.         AND cl_afect = '232'
  21. GROUP BY rpe

Para que te funcione, dependiendo de los detalles que están faltando, esa suconsulta debería ser una tabla derivada en el FROM de la mayor. Algo como:
Código SQL:
Ver original
  1. SELECT
  2.     rpe, importeRPE, SUM(importe) total
  3. FROM
  4.     b_cijubi c
  5.         INNER JOIN
  6.     b_parame p ON p.numnomin = c.numnomin
  7.         INNER JOIN
  8.     (SELECT
  9.         rpe, SUM(importe) importeRPE
  10.     FROM
  11.         b_cijubi, b_parame
  12.     WHERE
  13.         cl_afect = '231'
  14.             AND b_parame.numnomin = b_cijubi.numnomin
  15.             AND fe_teper BETWEEN '2010-11-10' AND '2011-11-10'
  16.     GROUP BY rpe) t1 ON t1.rpe = c.rpe
  17. WHERE
  18.     fe_teper BETWEEN '2010-11-10' AND '2011-11-10'
  19.         AND cl_afect = '232'
  20. GROUP BY rpe
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 25/04/2016, 14:28
Avatar de rubenx4  
Fecha de Ingreso: abril-2016
Mensajes: 2
Antigüedad: 8 años
Puntos: 0
De acuerdo Respuesta: Error al consultar con sub query

Muchas gracias por el apoyo finalmente ya funciono la consulta le agregue solo unas referencias quedando de la siguiente manera.

Código SQL:
Ver original
  1. SELECT
  2.     c.rpe,importeRPE,SUM(importe) total
  3. FROM
  4.     b_cijubi c
  5.         INNER JOIN
  6.     b_parame p ON p.numnomin = c.numnomin
  7.         INNER JOIN
  8.     (SELECT
  9.          b_cijubi.rpe,SUM(importe) importeRPE
  10.     FROM
  11.         b_cijubi, b_parame
  12.     WHERE
  13.         cl_afect = '231'
  14.             AND b_parame.numnomin = b_cijubi.numnomin
  15.             AND fe_teper BETWEEN '2010-11-10' AND '2011-11-10'
  16.     GROUP BY rpe) t1 ON t1.rpe=c.rpe
  17. WHERE
  18.     fe_teper BETWEEN '2010-11-10' AND '2011-11-10'
  19.         AND cl_afect = '232'
  20. GROUP BY c.rpe,importeRPE

Última edición por gnzsoloyo; 25/04/2016 a las 16:38
  #4 (permalink)  
Antiguo 25/04/2016, 16:43
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Error al consultar con sub query

Todo bien, excepto que ESTO no se ve correcto:

Código SQL:
Ver original
  1. GROUP BY c.rpe, importeRPE -- <<<

¿Por qué estás usando un campo calculado como agrupamiento?
Eso no tiene sentido.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: consultar, query, select
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 17:56.