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

CONSULTA SQL


juliano1613

Pergunta

Por favor me ajudem, tenho essa consulta sql abaixo, mas ela não esta fazendo o que eu queria. Bem eu queria que ela contasse quando o valor dentro da coluna modalidade fosse igual a um valor X , porem ela esta contando tudo independente do valor que esta na modalidade. Por exemplo: UM determinado usuário tem:

3 registros com modalidade = 19

2 registros com modalidade = 20

1 regustro com modalidade = 21.

Eu quero que ele me mostre :

3 registros com modalidade = 19

2 registros com modalidade = 20

1 regustro com modalidade = 21.

Porem ele esta me mostrando:

6 resgistros com modalidade = 19.

Me ajudem por favor:

SELECT
(CASE WHEN D.modalidade = '14' THEN COUNT(D.VALOR)END) AS conta_limite,
(CASE WHEN D.modalidade = '15' THEN COUNT(D.VALOR)END) AS conta_cdc,
(CASE WHEN D.modalidade = '19' THEN COUNT(D.VALOR)END) AS conta_sms,

(CASE WHEN D.modalidade = '14' THEN SUM(D.VALOR)END) AS soma_limite,
(CASE WHEN D.modalidade = '15' THEN SUM(D.VALOR)END) AS soma_cdc,
(CASE WHEN D.modalidade = '19' THEN SUM(D.VALOR)END) AS soma_sms,


(CASE WHEN D.produto = '2' THEN COUNT(D.VALOR)END) AS conta_consorcio,
(CASE WHEN D.produto = '4' THEN COUNT(D.VALOR)END) AS conta_consignado,
(CASE WHEN D.produto = '1' THEN COUNT(D.VALOR)END) AS conta_seguro,

(CASE WHEN D.produto = '2' THEN SUM(D.VALOR)END) AS soma_consorcio,
(CASE WHEN D.produto = '4' THEN SUM(D.VALOR)END) AS soma_consignado,
(CASE WHEN D.produto = '1' THEN SUM(D.VALOR)END) AS soma_seguro,
(CASE WHEN D.produto = '1' THEN SUM(D.receita_coop)END) AS soma_prolabore,

SUM(D.receita_coop + D.valor) AS soma_total,



D.produto, D.modalidade,
U.nome, U.cdc, U.consignado, U.consorcio, U.sms, U.limite_cartao, U.imagem, U.pa, U.prolabore

FROM produtividade_diaria D
INNER JOIN usuarios U

ON (D.vendedor = U.id)


WHERE year(D.data) = '2015' and
month(D.data) = '$mes' and
U.pa = '$pa' and
D.situacao = 'Efetivado'
GROUP BY D.vendedor
ORDER BY soma_total
DESC LIMIT 100

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Faça assim:

SELECT 
  SUM(IF(D.modalidade = '14', 1, 0)) AS conta_limite,
  SUM(IF(D.modalidade = '15', 1, 0)) AS conta_cdc,
  SUM(IF(D.modalidade = '19', 1, 0)) AS conta_sms,
  
  SUM(IF(D.modalidade = '14', D.VALOR, 0) AS soma_limite,
  SUM(IF(D.modalidade = '15', D.VALOR, 0) AS soma_cdc,
  SUM(IF(D.modalidade = '19', D.VALOR, 0) AS soma_sms,
  
  SUM(IF(D.produto  = '2', 1, 0) AS conta_consorcio,
  SUM(IF(D.produto  = '4', 1, 0) AS conta_consignado,
  SUM(IF(D.produto  = '1', 1, 0) AS conta_seguro,
  
  SUM(IF(D.produto  = '2', D.VALOR, 0) AS soma_consorcio,
  SUM(IF(D.produto  = '4', D.VALOR, 0)  AS soma_consignado,
  SUM(IF(D.produto  = '1', D.VALOR, 0)  AS soma_seguro,

  SUM(IF(D.produto    = '1', D.receita_coop, 0) AS soma_prolabore,
  
  SUM(D.receita_coop + D.valor) AS soma_total,

  D.produto, D.modalidade,
  U.nome, U.cdc, U.consignado, U.consorcio, U.sms, U.limite_cartao, U.imagem, U.pa, U.prolabore

FROM produtividade_diaria D
INNER JOIN usuarios U ON (D.vendedor = U.id)
WHERE  year(D.data) = '2015' and 
month(D.data) = '$mes' and
U.pa = '$pa' and
D.situacao = 'Efetivado'
GROUP BY D.vendedor
ORDER BY soma_total
DESC LIMIT 100
Link para o comentário
Compartilhar em outros sites

  • 0

Muito obrigado era isso mesmo que precisava. Agora tenho uma outra duvida, tenho uma consulta que verifica na tabela 'USUARIOS' qual usuário esta na tabela 'PRODUTIVIDADE_DIARIA ' e me retorna todos os vendedores, porem quero fazer uma que retorna todos os usuários que não venderam , ou seja esta na tabela 'USUARIOS' mas não esta na tabela 'PRODUTIVIDADE_DIARIA '. Como eu faço isso ? . Desde já obrigado.

$busca_vendedores = mysql_query("

SELECT

D.produto, D.modalidade,
U.nome, U.cdc, U.consignado, U.consorcio, U.sms, U.limite_cartao, U.imagem, U.pa, U.prolabore, D.data

FROM produtividade_diaria D

INNER JOIN usuarios U

ON (D.vendedor = U.id)


WHERE

year(D.data) = '2015' and
month(D.data) = '$mes' and
U.pa = '$pa' and

D.situacao = 'Efetivado'

GROUP BY D.vendedor
ORDER BY soma_total
DESC LIMIT 100

")

Editado por juliano1613
Link para o comentário
Compartilhar em outros sites

  • 0

Faça assim:

SELECT D.produto, D.modalidade, U.nome, U.cdc, U.consignado, U.consorcio, U.sms, U.limite_cartao, U.imagem, U.pa, U.prolabore, D.data
FROM produtividade_diaria D
LEFT JOIN usuarios U ON D.vendedor = U.id
WHERE year(D.data) = '2015' and month(D.data) = '$mes' and U.pa = '$pa'  and D.situacao = 'Efetivado' AND u.id IS NULL
GROUP BY D.vendedor
ORDER BY soma_total
DESC LIMIT 100
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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...