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

Subconsulta con group by

Estas en el tema de Subconsulta con group by en el foro de SQL Server en Foros del Web. Hola amigos. Tengo una consulta como... @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original SELECT us . codusuario , us . nombreusuario , des . montodesembolso , ...
  #1 (permalink)  
Antiguo 22/02/2012, 09:46
 
Fecha de Ingreso: septiembre-2009
Mensajes: 38
Antigüedad: 15 años, 2 meses
Puntos: 0
Subconsulta con group by

Hola amigos.
Tengo una consulta como...
Código SQL:
Ver original
  1. SELECT
  2. us.codusuario,
  3. us.nombreusuario,
  4. des.montodesembolso,
  5. res.montoreversion,
  6. CASE WHEN pro.tecnologia=1 THEN (SELECT  top 1 secprescliente FROM tabpresCliente WHERE codpretamo=pres.codprestamo)
  7.      WHEN pro.tecnologia=2 THEN (SELECT top 1 secpretamo FROM tabasociacion WHERE codasociacion=pres.codasociacion) END ciclo
  8. FROM tabdesembolsos des
  9. INNER JOIN tabreversiones rev ON des.codprestamo=rev.codprestamo
  10. INNER JOIN tabprestamos pres ON pres.codprestamo=des.codprestamo
  11. INNER JOIN tabusuarios us ON us.codusuario=pres.codusuario
  12. INNER JOIN tabproducto pro ON pro.codproducto=pres.codproducto

y quiero agrupar, pero no se como hacer con los campos secprescliente y secpretamo de la subconsulta.

Saludos
  #2 (permalink)  
Antiguo 22/02/2012, 09:58
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Subconsulta con group by

Código SQL:
Ver original
  1. SELECT * FROM
  2. (
  3.     SELECT
  4.     us.codusuario,
  5.     us.nombreusuario,
  6.     des.montodesembolso,
  7.     res.montoreversion,
  8.     CASE WHEN pro.tecnologia=1 THEN (SELECT  top 1 secprescliente FROM tabpresCliente WHERE codpretamo=pres.codprestamo)
  9.          WHEN pro.tecnologia=2 THEN (SELECT top 1 secpretamo FROM tabasociacion WHERE codasociacion=pres.codasociacion) END ciclo
  10.     FROM tabdesembolsos des
  11.     INNER JOIN tabreversiones rev ON des.codprestamo=rev.codprestamo
  12.     INNER JOIN tabprestamos pres ON pres.codprestamo=des.codprestamo
  13.     INNER JOIN tabusuarios us ON us.codusuario=pres.codusuario
  14.     INNER JOIN tabproducto pro ON pro.codproducto=pres.codproducto
  15. ) t1 GROUP BY tus _campos
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 22/02/2012, 10:33
 
Fecha de Ingreso: septiembre-2009
Mensajes: 38
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Subconsulta con group by

Gracias Libras, jeje, no se me ocurrió eso.

Saludos.
  #4 (permalink)  
Antiguo 22/02/2012, 11:20
 
Fecha de Ingreso: septiembre-2009
Mensajes: 38
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Subconsulta con group by

Otra problemita,... si quiero sumar montoreversion, me cuadruplica el valor.

Código SQL:
Ver original
  1. SELECT
  2. codusuario,nombreusuario,montodesembolso,SUM(montoreversion)montoreversion,ciclo
  3.  FROM
  4. (
  5. SELECT
  6.  us.codusuario,
  7.  us.nombreusuario,
  8.  des.montodesembolso,
  9.  res.montoreversion,
  10.  CASE WHEN pro.tecnologia=1 THEN (SELECT *top 1 secprescliente FROM tabpresCliente WHERE codpretamo=pres.codprestamo)
  11. WHEN pro.tecnologia=2 THEN (SELECT top 1 secpretamo FROM tabasociacion WHERE codasociacion=pres.codasociacion) END ciclo
  12.  FROM tabdesembolsos des
  13.  INNER JOIN tabreversiones rev ON des.codprestamo=rev.codprestamo
  14.  INNER JOIN tabprestamos pres ON pres.codprestamo=des.codprestamo
  15.  INNER JOIN tabusuarios us ON us.codusuario=pres.codusuario
  16.  INNER JOIN tabproducto pro ON pro.codproducto=pres.codproducto
  17. ) t1
  18. GROUP BY codusuario,nombreusuario,montodesembolso,ciclo

Saludos
  #5 (permalink)  
Antiguo 22/02/2012, 11:32
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Subconsulta con group by

estas agrupando por todos los campos si cliclo tiene valores diferentes entonces no te va a sumar la informacion como la necesitas....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 22/02/2012, 12:04
 
Fecha de Ingreso: septiembre-2009
Mensajes: 38
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Subconsulta con group by

Tengo 2 registros que montoreversion da 1230.77 pero al hacer

Código SQL:
Ver original
  1. SELECT SUM(montoreversion)montoreversion
  2. FROM (
  3. SELECT
  4.  us.codusuario,
  5.  us.nombreusuario,
  6.  des.montodesembolso,
  7.  res.montoreversion,
  8.  CASE WHEN pro.tecnologia=1 THEN (SELECT *top 1 secprescliente FROM tabpresCliente WHERE codpretamo=pres.codprestamo)
  9. WHEN pro.tecnologia=2 THEN (SELECT top 1 secpretamo FROM tabasociacion WHERE codasociacion=pres.codasociacion) END ciclo
  10.  FROM tabdesembolsos des
  11.  INNER JOIN tabreversiones rev ON des.codprestamo=rev.codprestamo
  12.  INNER JOIN tabprestamos pres ON pres.codprestamo=des.codprestamo
  13.  INNER JOIN tabusuarios us ON us.codusuario=pres.codusuario
  14.  INNER JOIN tabproducto pro ON pro.codproducto=pres.codproducto
  15. ) t1

en vez de darme 2461.54, me da 4923.08
  #7 (permalink)  
Antiguo 22/02/2012, 12:39
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Subconsulta con group by

pon un ejemplo de lo que te regresa este query
Código SQL:
Ver original
  1. SELECT
  2.  us.codusuario,
  3.  us.nombreusuario,
  4.  des.montodesembolso,
  5.  res.montoreversion,
  6.  CASE WHEN pro.tecnologia=1 THEN (SELECT *top 1 secprescliente FROM tabpresCliente WHERE codpretamo=pres.codprestamo)
  7. WHEN pro.tecnologia=2 THEN (SELECT top 1 secpretamo FROM tabasociacion WHERE codasociacion=pres.codasociacion) END ciclo
  8.  FROM tabdesembolsos des
  9.  INNER JOIN tabreversiones rev ON des.codprestamo=rev.codprestamo
  10.  INNER JOIN tabprestamos pres ON pres.codprestamo=des.codprestamo
  11.  INNER JOIN tabusuarios us ON us.codusuario=pres.codusuario
  12.  INNER JOIN tabproducto pro ON pro.codproducto=pres.codproducto
y vemos como puedes hacer la sumatoria :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: group, select, subconsulta, campos
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 22:22.