Como fazer uma query pegando informações de uma tabela da empresa 01 junto com a empresa 02 em AdvPL

Você já precisou montar algum relatório com informação de duas tabelas de empresas diferentes, como por exemplo, SB1010 e SB1020? Veja como fazer a query para o relatório no artigo de hoje.

Uma funcionalidade muito útil em queries SQL, mas pouco explorada por analistas do mundo Protheus, é a união de queries.

Basicamente, unir queries, significa que você pode ter 2 ou mais queries, e unir o resultado delas. Dessa forma, você pode ter uma query na SB1010 e SB1020 e unir as duas, saindo tudo em um mesmo resultado.

Assim como, você também poderia ter uma query buscando as saídas na SF2010 e as entradas na SF1010 e unir as duas.

Para unir as queries, é utilizado o comando UNION ALL, e ambas as queries precisam ter o mesmo número de colunas e o mesmo tipo de informação nelas. Além disso, só pode ter uma expressão de ordenação (ORDER BY), no fim da query.

Abaixo um exemplo, unindo uma query listando as NFs de Saída com uma query listando as NFs de Entrada:

SELECT
	'SAIDA' AS TIPO,
	F2_EMISSAO AS EMISSAO,
	F2_DOC AS DOCUMENTO,
	F2_SERIE AS SERIE
FROM
	SF2010 SF2
WHERE
	F2_FILIAL = '01'
	AND F2_EMISSAO = '20201109'
	AND F2_TIPO NOT IN ('B', 'D')
	AND SF2.D_E_L_E_T_ = ' '

UNION ALL

SELECT
	'ENTRADA' AS TIPO,
	F1_EMISSAO AS EMISSAO,
	F1_DOC AS DOCUMENTO,
	F1_SERIE AS SERIE
FROM
	SF1010 SF1
WHERE
	F1_FILIAL = '01'
	AND F1_DTDIGIT = '20201109'
	AND F1_TIPO NOT IN ('B', 'D')
	AND SF1.D_E_L_E_T_ = ' '

ORDER BY
	EMISSAO

A partir disso, com essa query você consegue criar relatórios em AdvPL, inclusive se você quiser usar o Autumn Code Maker, abaixo um vídeo de como é fácil gerar um código fonte através de uma query:

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan Atilio (Daniel Atilio)
Especialista em Engenharia de Software pela FIB. Entusiasta de soluções Open Source. E blogueiro nas horas vagas.

Deixe uma resposta