HAVING

Faz uma filtragem no Agrupamento dos dados

Exemplo da Rotina:

SELECT ...
GROUP BY [Campos]
HAVING [Condição]

Exemplo 1- Trazendo todos os dados que tem mais de um registro:

SELECT
    B2_COD AS PRODUTO,
    COUNT(B2_LOCAL) AS ARMAZENS,
    SUM(B2_QATU) AS SALDO
FROM
    SB2010 SB2
WHERE
    B2_FILIAL = '01'
    AND SB2.D_E_L_E_T_ = ' '
GROUP BY
    B2_COD
HAVING
    COUNT(B2_LOCAL) >= 2

Exemplo 2- Trazendo registros que tiveram mais de 50 itens:

SELECT
    C5_NUM AS PEDIDO,
    COUNT(C6_ITEM) AS ITENS,
    SUM(C6_VALOR) AS VALOR
FROM
    SC5010 SC5
    INNER JOIN SC6010 SC6 ON (
        C6_FILIAL = C5_FILIAL
        AND C5_NUM = C6_NUM
        AND SC6.D_E_L_E_T_ = ' '
    )
WHERE
    C5_FILIAL = '01'
    AND C5_EMISSAO >= '20190601'
    AND C5_EMISSAO <= '20190630'
    AND SC5.D_E_L_E_T_ = ' '
GROUP BY
    C5_NUM
HAVING
    COUNT(C6_ITEM) >= 50

Exemplo 3- Trazendo dados agrupados, somente com os preços maiores que 500.000:

SELECT
	B1_DESC CARRO,
	MAX(B1_PRV1) VALOR
FROM
	SB1990
GROUP BY B1_DESC
	HAVING MAX(B1_PRV1) > 500000

Observações:

  • Caso tenha dúvidas ou problemas com os exemplos, entre em contato;
  • Se tiver sugestões de rotinas, pode entrar em contato;
  • Exemplo 3 enviado por Caio Henrique;