Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá,
Como realizar uma ordenação quando a ordem lógica entre uma linha e outra é de forma subsequente em zigue-zague conforme abaixo:
"hora_entrada";"hora_saida";"order_by_hora_entrada";"order_needed"
"2014-12-30 10:12:00";"2014-12-30 10:34:00";1;1
"2014-12-30 10:34:00";"2014-12-30 11:20:00";2;2
"2014-12-30 11:06:00";"2014-12-31 17:03:00";3;5
"2014-12-30 11:20:00";"2014-12-30 11:21:00";4;3
"2014-12-30 11:21:00";"2014-12-30 11:06:00";5;4
"2014-12-31 17:03:00";"2015-01-02 10:06:00";6;6
"2015-01-02 09:19:00";"2015-01-02 09:25:00";7;8
"2015-01-02 10:06:00";"2015-01-02 09:19:00";8;7
Se obedecer a ordem "hora_entrada", acima estará correto conforme a coluna 3, mas preciso da ordem hora_entrada > hora_saida > hora_entrada (próxima linha), considerando que a hora_saida de uma linha é igual a hora_entrada da linha a seguir, conforme coluna 4. Verifique que a ordem é bem diferente.
OBS: esses erros ocorreram quando entre a entrada e a saída pode haver divergências no horário de verão da tramitação.
Posso ordenar de forma direta ou utilizando row_number?
Agradeço a ajuda!
Motta,
Não resolve, pois em algumas linhas entrada >> saída ocorre a hora de diferença no horário de verão, então as interligações são em zigue-zague (primeira entrada >> saida >> entrada >> saida >>... última saída). A ligação é possível, pois a saída de uma linha é igual a entrada de uma outra linha. Veja bem abaixo e perceberá que há uma sutil inversão de ordens quando diferencio o order by direto para esse outro método:
"hora_entrada";"hora_saida";"order_by_hora_entrada";"order_needed"
"2014-12-30 10:12:00";"2014-12-30 10:34:00";1;1
"2014-12-30 10:34:00";"2014-12-30 11:20:00";2;2
"2014-12-30 11:06:00";"2014-12-31 17:03:00";3;5
"2014-12-30 11:20:00";"2014-12-30 11:21:00";4;3
"2014-12-30 11:21:00";"2014-12-30 11:06:00";5;4
"2014-12-31 17:03:00";"2015-01-02 10:06:00";6;6
"2015-01-02 09:19:00";"2015-01-02 09:25:00";7;8
"2015-01-02 10:06:00";"2015-01-02 09:19:00";8;7
A ordem acima está pela hora_entrada asc, mas veja no destaque, a interligação da hora_saida para hora_entrada da linha posterior, que não obedece a mesma classificação.
Não tenho certeza de ter enendido a questão mas tentou fazer um join na mesma tabela unido
hora-saida com hora-entrada ?
Tem saidas posteriores a entrada , esta certo isto !?
Um simples order by entrada não resolve !?