Usina BRAdvPL Guia
Entrar
← Todos os tópicos
GUIA PRÁTICOEm revisão

JOINs e funções de agregação no Protheus

SELECT ... LEFT JOIN ... ON ... GROUP BY ...

Relaciona tabelas e agrega resultados sem perder o contexto de filial.

JOINs e funções de agregação no ProtheusAdvPL
01 · VISÃO GERAL

Visão geral

JOIN define correspondência de chaves; GROUP BY agrupa linhas e COUNT/SUM calculam valores por grupo. Uma relação 1:N pode multiplicar linhas e distorcer totais do cabeçalho. No LEFT JOIN, filtros da tabela opcional devem ser avaliados no ON quando a intenção é manter registros sem correspondência. O exemplo monta uma string SQL e não a executa. Filial e exclusão lógica são aplicadas separadamente em cada tabela. A referência comunitária exemplifica JOIN e agregação, mas sua recomendação genérica de NOLOCK e suas escritas diretas não são adotadas. (Fontes: refs. 1–2.)

02 · SINTAXE

Sintaxe

SELECT ... LEFT JOIN ... ON ... GROUP BY ...
03 · EXEMPLO PRÁTICO

Exemplo comentado

#Include "Protheus.ch"

User Function Ed500()
    Local cSql := "SELECT A.A1_COD,A.A1_LOJA,COUNT(P.C5_NUM) AS QTD "
    // Filtrar cada tabela conforme seu compartilhamento.
    cSql += "FROM "+RetSqlName("SA1")+" A "
    cSql += "LEFT JOIN "+RetSqlName("SC5")+" P ON "
    cSql += "P.C5_CLIENTE=A.A1_COD AND P.C5_LOJACLI=A.A1_LOJA "
    cSql += "AND P.C5_FILIAL='"+xFilial("SC5")+"' "
    cSql += "AND P.D_E_L_E_T_=' ' "
    cSql += "WHERE A.A1_FILIAL='"+xFilial("SA1")+"' "
    cSql += "AND A.D_E_L_E_T_=' ' "
    cSql += "GROUP BY A.A1_COD,A.A1_LOJA"
    ConOut(cSql)
Return Nil
Resultado esperado

Mostra SQL para contagem de pedidos por cliente/loja, incluindo grupos sem pedido; não abre cursor. Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.

BOAS PRÁTICAS
  • Antes da execução, validar dicionário, permissões, cardinalidade, ChangeQuery, tipos e plano. Para dados externos, usar parâmetros do framework e evitar concatenação.
  • Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.

Conteúdos relacionados

REFERÊNCIAS
  1. TOTVS. Desenvolvendo queries no Protheus — seções de suporte SQL. TDN. Consulta em 2026-10-27.
  2. thalysjuvenal/advpl-specialist. embedded-sql/reference.md; commit d80599b. Consulta em 2026-10-27.
Situação
Em revisão
Página criada em
Última revisão em
Idioma original
Português
Revisão
Usina.BR
0 comentário(s) aprovado(s)

Comentários

Ainda não há comentários aprovados.

Entre com Google ou Microsoft para comentar.

Powered by Usina Docs · Alpha