Select de Documento de Entrada X Lançamento Contábil

Bom dia, galera.
Preciso fazer um relatório que traga os Lançamentos Contábeis (tabela CT2010) juntamente com os Documentos de Entrada (tabela SD1010) correspondente.
Então, pesquisando descobri que a ligação entre essas tabelas é realizado por uma tabela auxiliar, a tabela CV3 ( Rastreamento Lançamento). E se buscar um registro aleatório do campo CV3_IDORIG dentro do campo D1_MSUIDT ele traz um resultado, da mesma forma, se buscar um registro qualquer do campo CV3_IDDEST dentro do campo CT2_MSUIDT ele retorna os resultados.
Contudo, após realizar o seguinte Select, nenhum resultado é mostrado:
SELECT
CV3.CV3_IDORIG AS VALID_ORIG,
SD1.D1_MSUIDT AS ORIGEM,
CV3.CV3_IDDEST AS VALID_DEST,
CT2.CT2_MSUIDT AS DESTINO
FROM CV3010 CV3
INNER JOIN SD1010 SD1
ON SD1.D1_MSUIDT = CV3.CV3_IDORIG
INNER JOIN CT2010 CT2
ON CT2_MSUIDT = CV3.CV3_IDDEST
WHERE
CV3.D_E_L_E_T_ <> ‘*’ AND
ROWNUM < 10

Sabem informar se esses campos da tabela SD1010 e CT2010 não são indexados?
Alguém já conseguiu fazer um relatório assim?

Olá.

Tente utilizar a seguinte lógica de relacionamento:

SELECT * FROM CT2010 CT2
INNER JOIN CV3010 CV3 ON
CV3.CV3_FILIAL = CT2.CT2_FILORI AND
CV3.CV3_TABORI = ‘SD1’ AND
CV3.CV3_RECDES = CT2.R_E_C_N_O_ AND
CV3.D_E_L_E_T_ = ‘’
INNER JOIN SD1010 SD1 ON
SD1.R_E_C_N_O_ = CV3.CV3_RECORI
WHERE
CT2.D_E_L_E_T_ = ‘’

Opcionalmente, você pode criar um UNION com as notas que foram contabilizadas pelo cabeçalho ao invés dos itens (CV3_TABORI igual a SF1):

SELECT * FROM CT2010 CT2
INNER JOIN CV3010 CV3 ON
CV3.CV3_FILIAL = CT2.CT2_FILORI AND
CV3.CV3_TABORI = ‘SF1’ AND
CV3.CV3_RECDES = CT2.R_E_C_N_O_ AND
CV3.D_E_L_E_T_ = ‘’
INNER JOIN SF1010 SF1 ON
SF1.R_E_C_N_O_ = CV3.CV3_RECORI
INNER JOIN SD1010 SD1 ON
SD1.D1_FILIAL = SF1.F1_FILIAL AND
SD1.D1_DOC = SF1.F1_DOC AND
SD1.D1_SERIE = SF1.F1_SERIE AND
SD1.D1_FORNECE = SF1.F1_FORNECE AND
SD1.D1_LOJA = SF1.F1_LOJA AND
SD1.D_E_L_E_T_ = ‘’
WHERE
CT2.D_E_L_E_T_ = ‘’

1 curtida