Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvida com consulta SQL


Diegomoco

Pergunta

Boa tarde. Seguinte, tenho uma consulta:

SELECT SD2.D2_FILIAL, SD2.D2_TES, SD2.D2_COD, COUNT(SD2.D2_COD) AS CONTADOR

FROM SD2010 SD2

WHERE SD2.D2_EMISSAO BETWEEN '20110600' AND '20110999' AND

SD2.D_E_L_E_T_ <> '*' AND

SD2.D2_COD = '00385'

GROUP BY SD2.D2_FILIAL, SD2.D2_TES, SD2.D2_COD

Ela me retorna isso aqui:

D2_FILIAL D2_TES D2_COD CONTADOR

06 508 00385 2

06 907 00385 1

06 921 00385 51

01 537 00385 108

01 513 00385 124

01 905 00385 1

01 505 00385 173

Quero agora apenas os registros em negrito, que são os que mais tem ocorrência na filial (D2_FILIAL) pesquisada.

Alguma ideia de como fazer isso?

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Boa tarde Diego,

Mas você quer apenas os dois maiores? Se for, desta forma abaixo deve dar. O problema é que se desejar uma quantidade X de resgistros a cada execução q realizar...

SELECT top 2 SD2.D2_FILIAL, SD2.D2_TES, SD2.D2_COD, COUNT(SD2.D2_COD) AS CONTADOR
FROM SD2010 SD2
WHERE SD2.D2_EMISSAO BETWEEN '20110600' AND '20110999' AND
SD2.D_E_L_E_T_ <> '*' AND
SD2.D2_COD = '00385'
GROUP BY SD2.D2_FILIAL, SD2.D2_TES, SD2.D2_COD
ORDER BY 4 desc

Link para o comentário
Compartilhar em outros sites

  • 0
Boa tarde Diego,

Mas você quer apenas os dois maiores? Se for, desta forma abaixo deve dar. O problema é que se desejar uma quantidade X de resgistros a cada execução q realizar...

SELECT top 2 SD2.D2_FILIAL, SD2.D2_TES, SD2.D2_COD, COUNT(SD2.D2_COD) AS CONTADOR
FROM SD2010 SD2
WHERE SD2.D2_EMISSAO BETWEEN '20110600' AND '20110999' AND
SD2.D_E_L_E_T_ <> '*' AND
SD2.D2_COD = '00385'
GROUP BY SD2.D2_FILIAL, SD2.D2_TES, SD2.D2_COD
ORDER BY 4 desc

É na verdade eu não quero os dois maiores.

Eu quero o maior de cada filial.

Exemplo, tenho 10 filiais diferentes. Quero o maior da filial 1, o maior da filial 2....assim por diante.

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia Diego,

Tente pegar o MAX do count que realiza. Como o campo SD2.D2_COD está no agrupamento, creio que deva funcionar...

SELECT SD2.D2_FILIAL, SD2.D2_TES, SD2.D2_COD, max(COUNT(SD2.D2_COD)) AS CONTADOR
FROM SD2010 SD2
WHERE SD2.D2_EMISSAO BETWEEN '20110600' AND '20110999' AND
SD2.D_E_L_E_T_ <> '*' AND
SD2.D2_COD = '00385'
GROUP BY SD2.D2_FILIAL, SD2.D2_TES, SD2.D2_COD

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...