Webert Postado Fevereiro 14, 2011 Denunciar Share Postado Fevereiro 14, 2011 Pessoal, boa tarde.Eu preciso fazer uma consulta que irá rodar automaticamente, então preciso que o filtro da data seja automático, sendo este, sempre o dia anterior, e no caso da segunda feira, ser sexta, sábado e domingo.alguém pode me ajudar ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Fevereiro 14, 2011 Denunciar Share Postado Fevereiro 14, 2011 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Webert Postado Fevereiro 15, 2011 Autor Denunciar Share Postado Fevereiro 15, 2011 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Fevereiro 15, 2011 Denunciar Share Postado Fevereiro 15, 2011 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Webert Postado Fevereiro 15, 2011 Autor Denunciar Share Postado Fevereiro 15, 2011 Fulvio.Resolvido.Muito Obrigado. :rolleyes: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Fevereiro 15, 2011 Denunciar Share Postado Fevereiro 15, 2011 rs.... precisando estamos ai!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Webert
Pessoal, boa tarde.
Eu preciso fazer uma consulta que irá rodar automaticamente, então preciso que o filtro da data seja automático, sendo este, sempre o dia anterior, e no caso da segunda feira, ser sexta, sábado e domingo.
alguém pode me ajudar ?
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
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.