Yo veo dos formas básicas de lograrlo.
1) Con una cláusula poco usada que es la de OR exclusivo: XOR. Esta cláusula solo da TRUE cunado uno solo de los dos parámetros es TRUE.
En este caso podría ser:
Código MySQL:
Ver original TIDOC_DB.NOMBRE,
DOCU_DB.NUMFACT,
fecha,
SUM((DOCU_DB.DEBE
- DOCU_DB.HABER
)) total
CLIEN_DB
INNER JOIN DOCU_DB
ON CLIEN_DB.NREGUIST
= DOCU_DB.NRUTFACT
TIDOC_DB
ON DOCU_DB.TDOCNETEO
= TIDOC_DB.NUM
(DOCU_DB.NRUTFACT = '4990')
(DOCU_DB.DEBE
XOR DOCU_DB.HABER
) HAVING SUM((DOCU_DB.DEBE
- DOCU_DB.HABER
)) <> 0 ORDER BY TIDOC_DB.CODIGO
,DOCU_DB.NUMFACT
2) Puedes usar el mismo HAVING que usas, pero agregando una condición:
Código MySQL:
Ver original TIDOC_DB.NOMBRE,
DOCU_DB.NUMFACT,
fecha,
SUM((DOCU_DB.DEBE
- DOCU_DB.HABER
)) total
CLIEN_DB
INNER JOIN DOCU_DB
ON CLIEN_DB.NREGUIST
= DOCU_DB.NRUTFACT
TIDOC_DB
ON DOCU_DB.TDOCNETEO
= TIDOC_DB.NUM
(DOCU_DB.NRUTFACT = '4990')
ORDER BY TIDOC_DB.CODIGO
,DOCU_DB.NUMFACT
o bien:
Código MySQL:
Ver original TIDOC_DB.NOMBRE,
DOCU_DB.NUMFACT,
fecha,
SUM((DOCU_DB.DEBE
- DOCU_DB.HABER
)) total
CLIEN_DB
INNER JOIN DOCU_DB
ON CLIEN_DB.NREGUIST
= DOCU_DB.NRUTFACT
TIDOC_DB
ON DOCU_DB.TDOCNETEO
= TIDOC_DB.NUM
(DOCU_DB.NRUTFACT = '4990')
HAVING (DOCU_DB.DEBE
+ DOCU_DB.HABER
)<=1 ORDER BY TIDOC_DB.CODIGO
,DOCU_DB.NUMFACT
En fin, hay mchos juegos aritmético-lógicos que se pueden inventar para obtener el filtrado, lo que debes hacer es analizar qué condición se cumple exclusivamente con los registros que debes eliminar, y usar esa condición para excluirlos...