Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-03-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Eliminar registros de un query

buenos dias...

me gustaria que alguien me ilumine en este tema... les cuento

tengo un query que me hace una simple suma

Código SQL [-]
select M.Periodo, M.Libro, M.Voucher, M.FechaVoucher,  
SUM(iif (M.DH = 'D', M.n_IMP, 0.00 )) AS DEBEMN,  
SUM(iif (M.DH = 'H', M.n_IMP, 0.00 )) AS HABERMN,  
(SUM(iif (M.DH = 'D', M.n_IMP, 0.00 )) - SUM(iif (M.DH = 'H', M.n_IMP, 0.00 )) AS DIFMN,  
SUM(iif (M.DH = 'D', M.u_IMP, 0.00 )) AS DEBEME,  
SUM(iif (M.DH = 'H', M.u_IMP, 0.00 )) AS HABERME ,
SUM(iif (M.DH = 'D', M.u_IMP, 0.00 )) - SUM(iif (M.DH = 'H', M.u_IMP, 0.00 )) AS DIFME
from tblmovimientocontable M  
Group by M.Periodo, M.Libro, M.Voucher, M.FechaVoucher 
order by M.Periodo, M.Libro, M.Voucher'


por algun motivo desconocido me muestra la siguiente informacion

Cita:
Periodo...Libro....Voucher....DebeMn... HaberMn.... DIFMn...............................DebeMe... HaberMe.... DIFMe...
200408....01........0002.........100.00......100.00....-1.4775425154752E-10........33.50.....33.50......-1.74622981477E-10
:S

en la base de Datos (tanto en Access como en Sql Server) he truncado el campo n_imp y el u_imp

Código SQL [-]
 
Update tblmovimientocontable Set n_imp = Round(n_imp,2)
Update tblmovimientocontable Set u_imp = Round(u_imp,2)

si los importes del Debe y el Haber son Iguales... porque esa diferencia?


si fuera por algun Ghost in the machine.. me gustaria "barrer" el query y eliminar aquellos registros que el debe sea igual al haber
gracias
__________________
Dulce Regalo que Satanas manda para mi.....

Última edición por oscarac fecha: 30-03-2011 a las 16:35:37. Razón: me falto una coma en el query :P
Responder Con Cita
  #2  
Antiguo 30-03-2011
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 21
gatosoft Va camino a la fama
hola OscarC,

No te asustes, los valores que estas obteniendo: 1.4775425154752E-10, son realemente un cero, pero que por alguna razón de estructura de datos del compilador al hacer la suma o resta de valores de punto flotante, te entrgea esta diferencia...


Intenta no redondear/truncar los valores originales, sino el resultado de la suma en la consulta, asi:

Código SQL [-]
round((SUM(iif (M.DH = 'D', M.n_IMP, 0.00 )) - SUM(iif (M.DH = 'H', M.n_IMP, 0.00 )),2) AS DIFMN,  

round(SUM(iif (M.DH = 'D', M.u_IMP, 0.00 )) - SUM(iif (M.DH = 'H', M.u_IMP, 0.00 )),2) AS DIFME

espero te sirva
Responder Con Cita
  #3  
Antiguo 30-03-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
ok..
esto me ayudo mucho....
la cuestion ahora es que solo me muestre los que tienen diferencia
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #4  
Antiguo 30-03-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Resuelto

lo resolvi de esta manera....

Código SQL [-]
select M.Periodo, M.Libro, M.Voucher, M.FechaVoucher,  
SUM(iif (M.DH = 'D', M.n_IMP, 0.00 )) AS DEBEMN,  
SUM(iif (M.DH = 'H', M.n_IMP, 0.00 )) AS HABERMN,  
ROUND(SUM(iif (M.DH = 'D', M.n_IMP, 0.00 )) -  SUM(iif (M.DH = 'H', M.n_IMP, 0.00 ))) AS DIFMN,  
SUM(iif (M.DH = 'D', M.u_IMP, 0.00 )) AS DEBEME,  
SUM(iif (M.DH = 'H', M.u_IMP, 0.00 )) AS HABERME,  
ROUND(SUM(iif (M.DH = 'D', M.u_IMP, 0.00 )) -  SUM(iif (M.DH = 'H', M.u_IMP, 0.00 ))) AS DIFME 
from tblmovimientocontable M  
Group by M.Periodo, M.Libro, M.Voucher, M.FechaVoucher  
Having (
ROUND(SUM(iif (M.DH = 'D', M.n_IMP, 0.00 )) -  SUM(iif (M.DH = 'H', M.n_IMP, 0.00 ))) <> 0 or
ROUND(SUM(iif (M.DH = 'D', M.u_IMP, 0.00 )) -  SUM(iif (M.DH = 'H', M.u_IMP, 0.00 ))) <> 0 )
order by M.Periodo, M.Libro, M.Voucher


algo larguita la instruccion para algo tan sencillo..

se agradece
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Eliminar registros de ADO david.rguez Conexión con bases de datos 1 15-10-2007 13:18:48
Eliminar Registros look OOP 4 03-10-2007 17:42:17
Eliminar y actualizar registros con SQL Jheysson13 SQL 3 28-07-2006 22:32:01
Eliminar Registros Duplicados ? Jvilomar Firebird e Interbase 14 16-03-2004 22:14:35
Eliminar algunos registros con sql miguelb SQL 4 19-09-2003 16:11:43


La franja horaria es GMT +2. Ahora son las 03:13:05.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi