none
Dúvida com Calculo no Campo Datetime RRS feed

  • Pergunta

  • Bom dia!

    Por favor, me ajudem com uma dúvida...

    Tenho um select onde na linha order by é chamado o campo Data_Recebimento e esse select ordena uma fila de propostas...

    Só que um usuário irá determinar a prioridade, que está relacionado a horas, dessas propostas e então no select que monta a fila eu tenho que mexer no Order By...

    Eu pensei em duas possibilidades e quero ajuda pra montar esse trecho do comando...

    1- subtrair as horas do campo Data_Recebimento (tipo datetime) pois cada prioridade é uma hora... prioridade 1 = 6h, prioridade 2 = 5h, prioridade 3 = 4h, prioridade 4 = 3h, prioridade 2 = 1h e prioridade 0 = 0h (Não calcula nada, pois essa proposta não sofreu alteração na prioridade). Essas horas estão dentro de um campo, Prioridade_Hora.

    2- ordenar da seguinte forma: Data_Recebimento (onde só pegue a data), Prioridade, Data_recebimento (onde só pegue a hora)

    Alguém pode me ajudar a montar esse trecho do Order by? Dá pra fazer esse tipo de conta?? Subtrair no Order by?

    Obrigada desde já!!


    • Editado acolafati quinta-feira, 14 de novembro de 2013 12:49
    quinta-feira, 14 de novembro de 2013 12:47

Respostas

  • Utilize dessa forma:

    SELECT Proposta FROM Dados_Originais
    INNER JOIN Tabela_Prioridade ON
    Dados_Originais.Prioridade_ID = Tabela_Prioridade.Prioridade_ID
    ORDER BY 
    Data_Recebimento-CAST(Prioridade_Hora AS DATETIME)


    "A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski

    • Marcado como Resposta acolafati segunda-feira, 16 de dezembro de 2013 20:24
    quinta-feira, 14 de novembro de 2013 17:09
  • Deleted
    • Marcado como Resposta Giovani Cr sexta-feira, 22 de novembro de 2013 14:51
    quinta-feira, 14 de novembro de 2013 21:47

Todas as Respostas

  • Bom dia,

    Acolafati, não sei se entendi corretamente, mas experimente mais ou menos dessa forma:

    order by
        cast(Data_Recebimento as Date),
        Prioridade_Hora DESC,
        cast(Data_Recebimento as Time)

    Se não for obtido o resultado desejado, acho que seria melhor você postar alguns valores de exemplo para facilitar o entendimento da questão.

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    quinta-feira, 14 de novembro de 2013 13:09
  • Oi bom dia!

     

    Obrigada pelo retorno!!

     

    Pelo que estou vendo terei que fazer uma conta mesmo...

     

    Não consigo adicionar imagem ou link... mas veja se você entende...

    TABELA_PRIORIDADE
    Prioridade_ID Prioridade_Hora
    0 0h
    1 6h
    2 5h
    3 4h
    4 3h
    5 2h
    6 1h

    DADOS_ORIGINAIS

    Proposta Data_Recebimento Prioridade_ID Hora a ser Subtraida
    A 12/11/2013 10:30 0 0h
    B 12/11/2013 11:00 3 4h
    C 12/11/2013 14:30 4 3h
    D 13/11/2013 10:00 6 1h
    E 13/11/2013 10:45 2 5h
    F 14/11/2013 12:30 5 2h
    G 14/11/2013 15:30 1 6h

    RESULTADO_DESEJADO
    Proposta Data_Recebimento Prioridade_ID Hora Alterada
    B 12/11/2013 11:00 3 07:00
    A 12/11/2013 10:30 0 10:30
    C 12/11/2013 14:30 4 11:30
    E 13/11/2013 10:45 2 05:45
    D 13/11/2013 10:00 6 09:00
    G 14/11/2013 15:30 1 09:30
    F 14/11/2013 12:30 5 10:30

     

     

    Resumindo o meu Select hoje é asism...

    SELECT Proposta FROM Dados_Originais ORDER BY Data_Recebimento

    Mas a ordem teria que ser pelo calculo da Hora do campo Data_Recebimento - (menos) Prioridade_Horas

    Dai eu sei que temos que montar algo assim:

    SELECT Proposta FROM Dados_Originais

    INNER JOIN Tabela_Prioridade ON

    Dados_Originais.Prioridade_ID = Tabela_Prioridade.Prioridade_ID

    ORDER BY ...??????

    Conseguiu me entender??

    Fico muito grata!!!

    quinta-feira, 14 de novembro de 2013 14:27
  • Tenta assim:

    SELECT Proposta FROM Dados_Originais
    INNER JOIN Tabela_Prioridade ON
    Dados_Originais.Prioridade_ID = Tabela_Prioridade.Prioridade_ID
    ORDER BY DATEADD(hh,Prioridade_Hora,Data_Recebimento)
    


    "A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski

    quinta-feira, 14 de novembro de 2013 15:00
  • Pelo que eu entendi essa regra pertence ao seu sistema, não acha melhor ela estar na sua aplicação e não em um select?
    quinta-feira, 14 de novembro de 2013 15:12
  • Acolafati, de que tipo é a coluna Prioridade_Hora?

    Se for do tipo integer ou semelhante experimente apenas adicionar um sinal de menos na query sugerida pelo Kanaãm para subtrair:

    ORDER BY DATEADD(hh, -Prioridade_Hora, Data_Recebimento)

    Se for do tipo Time experimente:

    ORDER BY Dados_Originais.Data_Recebimento - Tabela_Prioridade.Prioridade_Hora

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    quinta-feira, 14 de novembro de 2013 15:58
  • Acolafati, de que tipo é a coluna Prioridade_Hora?

    Se for do tipo integer ou semelhante experimente apenas adicionar um sinal de menos na query sugerida pelo Kanaãm para subtrair:

    ORDER BY DATEADD(hh, -Prioridade_Hora, Data_Recebimento)

    Se for do tipo Time experimente:

    ORDER BY Dados_Originais.Data_Recebimento - Tabela_Prioridade.Prioridade_Hora

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    Bem observado gapimex.
    Não havia me atentado ao tipo do campo.
    Obrigado!

    "A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski

    quinta-feira, 14 de novembro de 2013 16:04
  • Pessoal, muito obrigada pelo Retorno!!

    Verifiquei que os campos estão assim:

    Data_Recebimento = smalldatetime

    e

    Prioridade_Hora = datetime

    Como ficaria neste caso essa conversão?

    Muito agradecida!!!

    quinta-feira, 14 de novembro de 2013 17:00
  • Utilize dessa forma:

    SELECT Proposta FROM Dados_Originais
    INNER JOIN Tabela_Prioridade ON
    Dados_Originais.Prioridade_ID = Tabela_Prioridade.Prioridade_ID
    ORDER BY 
    Data_Recebimento-CAST(Prioridade_Hora AS DATETIME)


    "A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski

    • Marcado como Resposta acolafati segunda-feira, 16 de dezembro de 2013 20:24
    quinta-feira, 14 de novembro de 2013 17:09
  • Deleted
    • Marcado como Resposta Giovani Cr sexta-feira, 22 de novembro de 2013 14:51
    quinta-feira, 14 de novembro de 2013 21:47