GARANTIR DESCONTO

Fórum Desconsiderar Sabados e DOmingos #55234

13/02/2006

0

Awe galera.....

Seguinte, eu estou fazendo uma consulta assim:

select 
                    enc.*, 
                    prod.nome produto, 
                    cli.codinome cliente, 
                    dep.nome dpto 
                    from 
                    encomendas enc 
                    left join 
                    produtos prod on (prod.id_produto = enc.id_produto) 
                    left join 
                    clientes cli on (cli.id_cliente = enc.id_cliente) 
                    left join 
                    departamentos dep on (dep.id_departamento = enc.id_departamento) 
                   where 
                   enc.situacao in (´PARADO´, ´EM ROTA´)
                   and (enc.data+3) <= current_date and enc.tentativas <> ´0´;


Ela funciona blzinha.... só que eu preciso saber o que tem mais de 3 dias EM ROTA ou PARADO, mas ai surge um problema, finais de semana, nós não trabalhamos, então fica assim, se algo foi lançado dia 10/02 e ficou PARADO ou EM ROTA hj vai constar nessa minha consulta, e não é pra constar... eu qro ignorar sabados e domingos....

Vlw


Ramms

Ramms

Responder

Posts

13/02/2006

Emerson Nascimento

select 
  enc.*,
  prod.nome produto, 
  cli.codinome cliente, 
  dep.nome dpto 
from 
  encomendas enc 
left join 
  produtos prod on (prod.id_produto = enc.id_produto) 
left join 
  clientes cli on (cli.id_cliente = enc.id_cliente) 
left join 
  departamentos dep on (dep.id_departamento = enc.id_departamento) 
where 
  enc.situacao in (´PARADO´, ´EM ROTA´) 

  and ((enc.data + 3) +
       (case when (extract(weekday from enc.data) + 3) > 6
             then 2
             else 0 end)) <= current_date

  and enc.tentativas <> ´0´

nessa instrução eu avalio se [i:59d94c6272]enc.data+3[/i:59d94c6272] é maior que sexta-feira (6) e, se for, incremento 2 à data para, assim, ignorar o fim de semana.


Responder

Gostei + 0

13/02/2006

Emerson Nascimento

se você quiser desconsiderar a data de cadastro caso a mesma seja num fim de semana, tente assim:
select 
  enc.*, 
  prod.nome produto, 
  cli.codinome cliente, 
  dep.nome dpto 
from 
  encomendas enc 
left join 
  produtos prod on (prod.id_produto = enc.id_produto) 
left join 
  clientes cli on (cli.id_cliente = enc.id_cliente) 
left join 
  departamentos dep on (dep.id_departamento = enc.id_departamento) 
where 
  enc.situacao in (´PARADO´, ´EM ROTA´) 

  and (enc.data +
        (case when extract(weekday from enc.data) = 6
              then 1
              else 0
         end)
      )
      +
      (case when (extract(weekday from
                    (enc.data +
                      (case when extract(weekday from enc.data) = 6
                            then 1
                            else 0
                       end)
                   )
                 ) + 3) > 5
            then 5
            else 3
       end)
       <= current_date 

  and (enc.tentativas <> ´0´)



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar