Ver Mensaje Individual
  #4  
Antiguo 12-04-2007
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Reputación: 22
fjcg02 Va camino a la fama
Probad a hacer esto

Código SQL [-]
SELECT PC.Codigo AS Codigo, PC.detalle AS Detalle, SUM(DA.Debe-DA.Haber) As SALDO
FROM PlanCuentas PC, DetalleAsiento DA
WHERE
PC.Codigo = left(DA.Codigo,len(PC.Codigo))
and len(PC.Codigo) <= 5
GROUP BY Pc.Codigo, PC.Detalle
ORDER BY PC.Codigo;

Lo que hago es linkar la tabla detalle asiento con la parte del campo codigo que afecte, que coincide con la longitud.
Saco sólo las cuentas de grupo, ya que entiendo que las de detalle no hacen falta ( and len(PC.Codigo) <= 5 ) o eso creo recordar de cuando era pequeño.

Otra forma de hacerlo, es poner un campo que diga por cada cuenta que grupo de cuentas totaliza ( por ejempo, la cuenta 1 totalizará '1%', la cuenta 1.1 totalizará '1.1*' ) y a partir de ahí intentar hacer todo de una sola query o en su defecto con un campo calculado, en el que ese valor indicado sería el valor del parámetro para la segunda consulta (
Código SQL [-]
select sum(debe-haber) from detalle where codigo like arametro
).

Esta prueba la he realizado en Access, pero en cualquier motor será fácil adaptarla. Por cierto, comprobad que el cálculo está bien, no vaya a ser que acabemos como el novio de la pantoja por 'interpretar' el plan contable

Suerte y un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -

Última edición por fjcg02 fecha: 12-04-2007 a las 00:30:46.
Responder Con Cita