Lucas, você tem alguns problemas estruturais na sua sentença... que podem gerar seu problema, bem como pode causar o retorno de informações erradas, e até deixar a sentença mais lenta.
INNER JOIN FCFO (nolock) ON
(FCFO.CODCFO=DLAF.EMITENTECFO OR FCFO.CODCFO=DLAF.CODCFOORIGEMDESTINO)
AND FCFO.CODCOLIGADA=DLAF.CODCOLCFO
-- ESSA PARTE ACIMA VC TEM QUE POR, MESMO QUE SEUS CLIFOR SEJAM GLOBAIS. E SE NÃO FOR, PIOR... AI ESTÁ ERRADO MESMO... E JÁ QUE ESTÁ USANDO OR NA LINHA ACIMA, TEVE QUE COLOCAR PARENTESIS TAMBÉM...
EM nenhum SUBSELECT seu você trata CodColigada... tem que tratar. Isso é um erro, e repito o que falei acima.
Exemplo (parte...):
(select DTRBITEM.CODTRB FROM DTRBITEM
where DTRBITEM.CODTRB='PIS' AND
DTRBITEM.IDLAF=DITEM.IDLAF AND DTRBITEM.CODCOLIGADA=DITEM.CODCOLIGADA AND
DTRBITEM.NUMITEM=DITEM.NUMITEM) [PIS],
(select DTRBITEM.BASETRB FROM DTRBITEM
where DTRBITEM.CODTRB='PIS' AND
DTRBITEM.IDLAF=DITEM.IDLAF AND
DTRBITEM.NUMITEM=DITEM.NUMITEM) [BC PIS],
INNER JOIN TMOV ON DLAF.IDMOV=TMOV.IDMOV --- CADE O JOIN DE CODCOLIGADA AQUI TAMBEM??
Por ultimo, veja ao retornarem os dados, se realmente não está vindo nada de diferente na consulta, pois, o DISTINCT apenas traz um registro quando há uma repetição completa da linha de retorno. Se uma vírgula for diferente ele mostra as duas ou mais linhas.