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

(Resolvido) Vários COUNT's em um SELECT


RSalvador

Pergunta

Olá a todos

Estou com dificuldades em montar uma query que sirva como resumo. Quero mostrar, em uma tabela, os pedidos abertos, fechados e cancelados de cada vendedor. Eu imaginei que o código abaixo funcionaria:

SELECT represen.rassoc AS VENDEDOR, SUM(item_ped.valtot) AS TOTAL, COUNT(*) AS QtdItens, COUNT(pedcart.status='A') AS Abertos, COUNT(pedcart.status='F') AS Fechados, COUNT(pedcart.status='C') AS Cancelados 
FROM item_ped INNER JOIN pedcart ON item_ped.num_ped=pedcart.num_ped INNER JOIN represen ON pedcart.cod_rep=represen.cod_rep GROUP BY Vendedor

O resultado desta query são colunas com valores idênticos. Isto é, Fulano tem 99 pedidos abertos, 99 fechados e 99 cancelados, Beltrano tem 48 abertos, 48 fechados e 48 cancelados.

Tentei usar "SUM(IF(pedcart.status='A',1,0))", mas o C++ Builder acusa erro ("Unknown MySQL Datatype"). Alguma sugestão?

Abraços!

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Olá de novo.

Resolvi o problema da seguinte forma:

SELECT represen.rassoc AS VENDEDOR,
SUM(item_ped.valtot) AS TOTAL,
COUNT(*) AS QtdItens,
COUNT(CASE WHEN pedcart.status='A' THEN 1 END) AS Abertos,
COUNT(CASE WHEN pedcart.status='F' THEN 1 END) AS Fechados,
COUNT(CASE WHEN pedcart.status='C' THEN 1 END) AS Cancelados  
FROM item_ped INNER JOIN pedcart ON item_ped.num_ped=pedcart.num_ped INNER JOIN represen ON pedcart.cod_rep=represen.cod_rep GROUP BY Vendedor

Fica como dica para consultas futuras. Abraços!

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...