1
resposta

DUVIDA

Eu não poderia só fazer o comando dessa forma ao invés de usar o having?


SELECT BAIRRO, ESTADO, SUM ([LIMITE DE CREDITO]) AS [SOMA LIMITE] FROM [dbo].[TABELA DE CLIENTES]
WHERE ESTADO = 'SP'  AND [LIMITE DE CREDITO] >= 140000 GROUP BY BAIRRO, ESTADO;
1 resposta

Olá, O resultado de seu código não gera a resposta esperada, pois a questão solicitada é retornar cliente que possuam suas somas de limite de credito maiores que 140.000. Seu select retorna os cliente que possuem limite de crédito igual ou maior que 140000 e depois soma esses limites. A clausula WHERE é sempre atendida primeiro, e depois a clausula SELECT. Uma alteranativa ao having seria usar um subselect

SELECT *
FROM   (
                SELECT   bairro,
                         estado,
                         Sum ([LIMITE DE CREDITO]) AS [SOMA LIMITE]
                FROM     [dbo].[TABELA DE CLIENTES]
                WHERE    estado = 'SP'
                GROUP BY bairro,
                         estado) RESULTADO
and    [SOMA LIMITE] >= 140000