Ver Mensaje Individual
  #2 (permalink)  
Antiguo 27/12/2013, 11:59
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Duda respecto a consulta por fechas con DateTimePicker VB2008

La verdad, me sorprendería que te funcionara, porque hay una muy mala aplicación del GROUP BY en casi todas las subconsultas. Y por otro lado hay cosas que sólo funcionarían en MySQL, pero no en Oracle ni SQL Server.
Código SQL:
Ver original
  1. SELECT
  2.     NumCta, Nombre, SegNeg,
  3.     SUM (periodo_pasado) Periodo_Pasado,
  4.     SUM (Cargo) Cargo,
  5.     SUM (Abono) Abono,
  6.     (Periodo_Pasado+Cargo-Abono) SaldoFinal  
  7. FROM
  8.     (SELECT NumCta, Nombre, SegNeg,
  9.             SUM (periodo_pasado) AS Periodo_Pasado,
  10.             SUM (Cargo) AS Cargo,
  11.             SUM (Abono) AS Abono  
  12.     FROM  
  13.         (SELECT
  14.             t1.Fecha,t1.NumCta,t1.Nombre,t1.SegNeg,t1.Cargo,t1.Abono,
  15.             t1.Saldo_Inicial,t2.saldo_inicial periodo_pasado
  16.         FROM
  17.             (SELECT *
  18.             FROM mi_vista
  19.             WHERE Fecha BETWEEN '20120910' AND '20120930') t1
  20.             LEFT JOIN
  21.             (SELECT
  22.                 NumCta,
  23.                 SegNeg,
  24.                 SUM(cargo) cargo ,
  25.                 SUM(abono) abono ,
  26.                 SUM(saldo_inicial) saldo_inicial
  27.             FROM mi_vista
  28.             WHERE Fecha BETWEEN '20121001' AND '20121007'
  29.             GROUP BY NumCta,Nombre,SegNeg) t2
  30.                 ON (t1.NumCta=t2.NumCta AND t1.NumCta=t2.NumCta)
  31.         ) completo
  32.     GROUP BY NumCta,Nombre,SegNeg) x
  33. GROUP BY NumCta, Nombre, SegNeg, Periodo_Pasado, Cargo, Abono
En la consulta mayor no puedes poner Cargo y Abono en el GROUP BY porque están afectadas por funciones agregadas. No se sabe de donde surge "Nombre" en otras, y no puedes invocar en esa clausula columnas que no estén en el SELECT (salvo en MySQL).
Además de eso, me parece una consulta demasiado complicada. Ni siquiera estoy muy seguro de qué es lo que calcula.
¿Qué motor de base de datos estás usando?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)