Obrigado pela sua resposta.
Já revisei esse relatório e, como você disse, ele traz todos os movimentos, mas não me serve porque está dividido em duas partes: o cabeçalho que não traz as quantidades dos itens que já tiveram movimentação (essas informações estão no detalhe) e ao exportar para o Excel, ele exporta apenas o cabeçalho completo e o detalhe do item selecionado, e eu preciso de TUDO agrupado em um único Excel.
Fiz essa consulta e já obtive o resultado desejado; uma AUDITORIA DE ESTOQUE COM LOTES POR DATA E ARTIGO:
SELECT
LOTEDETALLE.ItemCode AS ARTIGO,
LOTEDETALLE.ItemName AS DESCRIÇÃO,
LOTEDETALLE.BatchNum AS LOTEDETALLE,
LOTEDETALLE.LineNum AS PARTIDADETALLE,
LOTEDETALLE.BaseEntry AS NUMDOCUMENTO,
LOTEDETALLE.BaseType AS DOCUMENTO,
LOTEDETALLE.Quantity AS CANTIDADEDETALLE,
ATRIBUTOSLOTE.MnfSerial AS LARGURA,
LOTEDETALLE.DocDate AS DATA_DOCUMENTODETALLE,
LOTEDETALLE.CardName AS CLIENTE_CONTA, SENTIDO= CASE WHEN LOTEDETALLE.Direction = 1 THEN 'SAÍDA' ELSE 'ENTRADA' END,
LOTEDETALLE.WhsCode ALMOXARIFADO_DETALHE
FROM
IBT1 LOTEDETALLE, OBTN ATRIBUTOSLOTE
WHERE
ATRIBUTOSLOTE.DistNumber=LOTEDETALLE.BatchNum AND
LOTEDETALLE.DocDate BETWEEN '20120101' AND '20120106' AND
LOTEDETALLE.ItemCode = 'Artigo1010' AND
LOTEDETALLE.BaseType<>67
UNION
SELECT
ARTIGO = 'SI',
DESCRIÇÃO = 'SALDO INICIAL',
LOTEDETALLE='',
PARTIDADETALLE='',
NUMDOCUMENTO=0,
DOCUMENTO=0,
CANTIDADEDETALLE=SUM(LOTEDETALLE.Quantity),
LARGURA=0,
DATA_DOCUMENTODETALLE='',
CLIENTE_CONTA='',
SENTIDO= 'ENTRADA',
ALMOXARIFADO_DETALHE=''
FROM
IBT1 LOTEDETALLE
WHERE
LOTEDETALLE.DocDate < '20120101' AND LOTEDETALLE.ItemCode = 'Artigo1010' AND