As funções de agregação do SQL permitem que um conjunto de linhas sejam agregadas em uma única linha. As funções de agregação podem otimizar a performance do sistema pois reduzem o número de linhas retornadas diminuindo o tráfego de rede. Principais funções de agregação:
Static Function fSaldoSB2(cProduto) Local cQuery := "" Local nSaldo := 0 /* GetNextAlias() = Retorna um alias para ser utilizado no record set definido em dbUseArea() */ cAliasSB2 := GetNextAlias() /* RetSqlName = Retorna o nome físico da tabela, baseado em um alias, para ser usado em na contrução do "SELECT ... FROM TABELA" da query. */ cQuery := "SELECT SUM(B2_QATU) SALDOATUAL " cQuery += "FROM "+RetSqlName("SB2")+" SB2 " cQuery += "WHERE SB2.B2_FILIAL = '"+xFilial("SB2")+"' " cQuery += "AND SB2.D_E_L_E_T_ = '' " cQuery += "AND SB2.B2_COD = '" + cProduto + "' " /* ChangeQuery = Função de framework para compatibilizar a sintaxe das queries aos diferentes bancos de dados (SQL Server, Oracle, IBM DB2, Informix, MySql entre outros). Seu uso é obrigatório, salvo em casos especiais. */ cQuery := ChangeQuery(cQuery) /* dbUseArea = Efetua a criação de uma área de trabalho para o record set retornado por TcGenQry() */ dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasSB2,.T.,.T.) /* TcGenQry = Permite a abertuda de uma query diretamente no banco de dados utilizado na conexão atual, mediante uso da RDD TOPCONN. */ nSaldo := (cAliasSB2)->SALDOATUAL dbCloseArea() dbSelectArea("SB2") Return(nSaldo)