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

(Resolvido) Filtro de data automático


Webert

Pergunta

5 respostass a esta questão

Posts Recomendados

  • 0

Boa tarde Webert,

Há uma função em que o sql retorna um número para identificar o dia da semana. Aí basta fazer um case para se conseguir o resultado desejado.

Ficaria mais ou menos assim (altere a data na atribuilção da variável para fazer os testes):

DECLARE @Data DATETIME

SET @Data = '2011-02-14'

SELECT CASE DATEPART(w, @Data)
when 2 THEN DATEADD (d, -3, @Data)
ELSE DATEADD (d, -1, @Data)
END

Link para o comentário
Compartilhar em outros sites

  • 0

Fulvio, obrigado.

Eu não estou conseguindo aplicar o CASE para a minha realidade.

Eu consingo colocar o CASE no Where,

Vou colocar o meu códico abaixo, pra ver se ajuda.

Da forma que está, eu estou conseguindo fazer o filtro sempre com a data anterior, mas quando o relatório for gerado na segunda, eu vou ter que fazer manual, porque no domingo não tem emissão de documentos.

Select TFILIAL.STRNOME As 'Origem', TRELACAO.LNGRELACAO As 'Rel. Entrega', Convert(VarChar(10),TRELACAO.DTAEMISSAO,103) As 'Emissão',
TPESTRAN.STRNOME As 'Motorista', TRELACAO.STRPLACA As 'Placa', Count(DISTINCT(TCTRC.LNGCONTROLE)) As 'Num. de Documentos', 
Sum(TNF.NUMPESOREAL) As 'Peso Total'
From TCTRC WITH(NOLOCK) 
Inner Join TDOCRELACAO WITH (NOLOCK) On TDOCRELACAO.LNGDOC = TCTRC.LNGCTRC And TDOCRELACAO.LNGPOLOCOLETA = TCTRC.LNGPOLOCOLETA
Left Outer Join TRELACAO WITH (NOLOCK) On TDOCRELACAO.LNGRELACAO = TRELACAO.LNGRELACAO And TRELACAO.CHRTIPORELACAO = TDOCRELACAO.CHRTIPORELACAO And TDOCRELACAO.LNGPOLO = TRELACAO.LNGPOLO
Inner Join TFILIAL WITH (NOLOCK) On TFILIAL.INTFILIAL = TDOCRELACAO.LNGPOLO
Inner Join TPESTRAN WITH (NOLOCK) On TPESTRAN.INTPESTRAN = TRELACAO.INTMOTORISTA
Inner Join TNF WITH (NOLOCK) On TNF.CHRTIPO = TDOCRELACAO.CHRTIPO And TNF.LNGDOC = TCTRC.LNGCTRC And TNF.LNGPOLOCOLETA = TCTRC.LNGPOLOCOLETA
Where TRELACAO.LNGPOLO = 2 And TRELACAO.LNGRELACAO Is not null And TRELACAO.CHRTIPORELACAO = 'E' And TNF.CHRTIPO = 'C' And TDOCRELACAO.INTSITRELACAO =  -1  --  Ok And TRELACAO.DTAEMISSAO >= (SELECT CONVERT(VARCHAR(10),GETDATE() - 1,101)) And TRELACAO.DTAEMISSAO < (SELECT CONVERT(VARCHAR(10),GETDATE(),101))

Group By TFILIAL.STRNOME, TRELACAO.LNGRELACAO, TPESTRAN.STRNOME, TRELACAO.STRPLACA, TRELACAO.DTAEMISSAO
Order By TPESTRAN.STRNOME

Link para o comentário
Compartilhar em outros sites

  • 0

Boa tarde Webert,

Seria alguma coisa do tipo:

Select TFILIAL.STRNOME As 'Origem', TRELACAO.LNGRELACAO As 'Rel. Entrega', Convert(VarChar(10),TRELACAO.DTAEMISSAO,103) As 'Emissão',
TPESTRAN.STRNOME As 'Motorista', TRELACAO.STRPLACA As 'Placa', Count(DISTINCT(TCTRC.LNGCONTROLE)) As 'Num. de Documentos', 
Sum(TNF.NUMPESOREAL) As 'Peso Total'
From TCTRC WITH(NOLOCK) 
Inner Join TDOCRELACAO WITH (NOLOCK) On TDOCRELACAO.LNGDOC = TCTRC.LNGCTRC And TDOCRELACAO.LNGPOLOCOLETA = TCTRC.LNGPOLOCOLETA
Left Outer Join TRELACAO WITH (NOLOCK) On TDOCRELACAO.LNGRELACAO = TRELACAO.LNGRELACAO And TRELACAO.CHRTIPORELACAO = TDOCRELACAO.CHRTIPORELACAO And TDOCRELACAO.LNGPOLO = TRELACAO.LNGPOLO
Inner Join TFILIAL WITH (NOLOCK) On TFILIAL.INTFILIAL = TDOCRELACAO.LNGPOLO
Inner Join TPESTRAN WITH (NOLOCK) On TPESTRAN.INTPESTRAN = TRELACAO.INTMOTORISTA
Inner Join TNF WITH (NOLOCK) On TNF.CHRTIPO = TDOCRELACAO.CHRTIPO And TNF.LNGDOC = TCTRC.LNGCTRC And TNF.LNGPOLOCOLETA = TCTRC.LNGPOLOCOLETA
Where TRELACAO.LNGPOLO = 2 And TRELACAO.LNGRELACAO Is not null And TRELACAO.CHRTIPORELACAO = 'E' 
And TNF.CHRTIPO = 'C' And TDOCRELACAO.INTSITRELACAO = -1 -- Ok 
And TRELACAO.DTAEMISSAO >= (SELECT CASE DATEPART(w, GETDATE()) when 2 THEN DATEADD (d, -3, GETDATE())
ELSE DATEADD (d, -1, GETDATE()) END) And TRELACAO.DTAEMISSAO < GETDATE()

Group By TFILIAL.STRNOME, TRELACAO.LNGRELACAO, TPESTRAN.STRNOME, TRELACAO.STRPLACA, TRELACAO.DTAEMISSAO
Order By TPESTRAN.STRNOME

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...