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

(Resolvido) Select - Dia + 5, Dia + 10 e Dia + 15


Fábio Hargreaves

Pergunta

Olá,

Não tenho conhecimento sobre complexas querys e estou com uma imensa dificuldade para montar uma para um relatório que preciso.

Segue minha necessidade:

Tenho a tabela producao e a tabela producao_setor. Quero listar todos os setores em uma coluna e nas 3 próximas, fazer uma contagem de OP (ordem de producao) pela data de emissão com status 'Aberta', tipo, OP's abertas até 5 dias, OP's abertas entre 5 a 10 dias e finalmente OP's abertas há mais de 10 dias.

Ficaria assim:

SETOR 0 - 5 dias 6 - 10 dias + 10 dias

PINTURA 3 0 2

LIMPEZA 10 2 0

Os valores representam a contagem de OP's abertas, onde utilizo o count(codproducao).

Consegui relacionar através da query abaixo, porém não consigo separar por dias.

SELECT s.setor, COUNT( codproducao )
FROM producao p
JOIN producao_setor s ON p.setor = s.codproducao_setor
WHERE p.status = 'Aberta'
GROUP BY s.setor

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Faça assim:

SELECT s.setor, 
   SUM(IF(`data da tabela` >= DATE(NOW()) AND `data da tabela` <= DATE_ADD(DATE(NOW()), INTERVAL 5 DAY),1,0)) AS `0 - 5 dias`
   SUM(IF(`data da tabela` >= DATE_ADD(DATE(NOW()), INTERVAL 6 DAY AND `data da tabela` <= DATE_ADD(DATE(NOW()), INTERVAL 10 DAY),1,0)) AS `6 - 10 dias`,
   SUM(IF(`data da tabela` > DATE_ADD(DATE(NOW()), INTERVAL 10 DAY),1,0)) AS `+10 dias`
FROM producao p
JOIN producao_setor s ON p.setor = s.codproducao_setor
WHERE p.status = 'Aberta';
GROUP BY s.setor
`data da tabela` é o nome que dei ao campo data em sua tabela, que realizará o controle de data

DATE(NOW()) converte a data e hora gerada pelo sistema em data a ser usada como comparador

DATE_ADD adiciona um péríodo de tempo qualquer. Nesta caso foi definido como INTERVAL x DAY, onde x é o número de dias no futuro a partir de uma data base (a data do sistema)

Link para o comentário
Compartilhar em outros sites

  • 0

Tentei assim, substituindo o campo data para o valor correto da coluna.

SELECT s.setor,
SUM(IF(`dtsaida` >= DATE(NOW()) AND `dtsaida` <= DATE_ADD(DATE(NOW()), INTERVAL 5 DAY),1,0)) AS `0 - 5 dias`
SUM(IF(`dtsaida` >= DATE_ADD(DATE(NOW()), INTERVAL 6 DAY AND `dtsaida` <= DATE_ADD(DATE(NOW()), INTERVAL 10 DAY),1,0)) AS `6 - 10 dias`,
SUM(IF(`dtsaida` > DATE_ADD(DATE(NOW()), INTERVAL 10 DAY),1,0)) AS `+10 dias`
FROM producao p
JOIN producao_setor s ON p.setor = s.codproducao_setor
WHERE p.status = 'Aberta';
GROUP BY s.setor
Porém, deu este erro.

Mensagem do MySQL: dot.gif

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SUM(IF(`dtsaida` >= DATE_ADD(DATE(NOW()), INTERVAL 6 DAY AND `dtsaida` <= DATE_A' at line 3
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
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...