Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bonamim

Ajustar início de turno

Recommended Posts

Olá Pessoal,


Estou tendo que ajustar o início do turno de alguns funcionários, porém estou com muita dificuldade. Segue abaixo a situação:


+---------------------------------+--------------------------------+-------------+-----------------+

| STARTTIME | ENDTIME |ATIVIDADE|FUNCIONARIO|

+---------------------------------+--------------------------------+-------------+-----------------+

|2013-01-01 22:00:00.000 |2013-01-02 01:00:00.000 | xbc | x |

+---------------------------------+--------------------------------+-------------+-----------------+

|2013-01-02 01:00:00.000 |2013-01-02 02:50:00.000 | ihc | x |

+---------------------------------+--------------------------------+-------------+-----------------+

|2013-01-02 02:50:00.000 |2013-01-02 03:00:00.000 | uwc | x |

+---------------------------------+--------------------------------+-------------+-----------------+

|2013-01-02 03:00:00.000 |2013-01-02 03:30:20.000 | abc | x |

+---------------------------------+--------------------------------+-------------+-----------------+

|2013-01-02 03:30:20.000 |2013-01-02 04:00:00.000 | dbc | x |

+---------------------------------+--------------------------------+-------------+-----------------+

|2013-01-02 04:00:00.000 |2013-01-02 05:20:00.000 | auc | x |

+---------------------------------+--------------------------------+-------------+-----------------+

|2013-01-04 20:00:00.000 |2013-01-04 20:50:00.000 | xbc | x |

+---------------------------------+--------------------------------+-------------+-----------------+

|2013-01-04 20:50:00.000 |2013-01-04 23:17:00.000 | ihc | x |

+---------------------------------+--------------------------------+-------------+-----------------+

|2013-01-04 23:17:00.000 |2013-01-05 01:10:00.000 | uwc | x |

+---------------------------------+--------------------------------+-------------+-----------------+

|2013-01-05 01:10:00.000 |2013-01-05 02:32:20.000 | abc | x |

+---------------------------------+--------------------------------+-------------+-----------------+

|2013-01-05 02:32:20.000 |2013-01-05 04:00:00.000 | dbc | x |

+---------------------------------+--------------------------------+-------------+-----------------+

|2013-01-05 04:00:00.000 |2013-01-05 04:43:00.000 | auc | x |

+---------------------------------+--------------------------------+-------------+-----------------+

|2013-01-05 17:22:50.000 |2013-01-05 18:00:00.000 | uwc | y |

+---------------------------------+--------------------------------+-------------+-----------------+

|2013-01-05 18:00:00.000 |2013-01-05 18:32:40.000 | abc | y |

+---------------------------------+--------------------------------+-------------+-----------------+

|2013-01-05 18:32:40.000 |2013-01-05 19:00:00.000 | dbc | y |

+---------------------------------+--------------------------------+-------------+-----------------+

|2013-01-05 19:00:00.000 |2013-01-05 20:23:53.000 | auc | y |

+---------------------------------+--------------------------------+-------------+-----------------+

|2013-01-08 23:40:00.000 |2013-01-09 03:40:40.000 | abc | x |

+---------------------------------+--------------------------------+-------------+-----------------+

|2013-01-09 03:40:40.000 |2013-01-10 00:05:00.000 | dbc | x |

+---------------------------------+--------------------------------+-------------+-----------------+

|2013-01-10 00:05:00.000 |2013-01-10 03:00:58.000 | auc | x |

+---------------------------------+--------------------------------+-------------+-----------------+


Eu tenho atualmente a situação acima, porém preciso criar um campo "INICIO_TURNO" e dar um UPDATE conforme a situação abaixo:


+---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+

| STARTTIME | ENDTIME |ATIVIDADE|FUNCIONARIO| INICIO_TURNO |

+---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+

|2013-01-01 22:00:00.000 |2013-01-02 01:00:00.000 | xbc | x |2013-01-01 22:00:00.000|

+---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+

|2013-01-02 01:00:00.000 |2013-01-02 02:50:00.000 | ihc | x |2013-01-01 22:00:00.000|

+---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+

|2013-01-02 02:50:00.000 |2013-01-02 03:00:00.000 | uwc | x |2013-01-01 22:00:00.000|

+---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+

|2013-01-02 03:00:00.000 |2013-01-02 03:30:20.000 | abc | x |2013-01-01 22:00:00.000|

+---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+

|2013-01-02 03:30:20.000 |2013-01-02 04:00:00.000 | dbc | x |2013-01-01 22:00:00.000|

+---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+

|2013-01-02 04:00:00.000 |2013-01-02 05:20:00.000 | auc | x |2013-01-01 22:00:00.000|

+---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+

|2013-01-04 20:00:00.000 |2013-01-04 20:50:00.000 | xbc | x |2013-01-04 20:00:00.000|

+---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+

|2013-01-04 20:50:00.000 |2013-01-04 23:17:00.000 | ihc | x |2013-01-04 20:00:00.000|

+---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+

|2013-01-04 23:17:00.000 |2013-01-05 01:10:00.000 | uwc | x |2013-01-04 20:00:00.000|

+---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+

|2013-01-05 01:10:00.000 |2013-01-05 02:32:20.000 | abc | x |2013-01-04 20:00:00.000|

+---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+

|2013-01-05 02:32:20.000 |2013-01-05 04:00:00.000 | dbc | x |2013-01-04 20:00:00.000|

+---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+

|2013-01-05 04:00:00.000 |2013-01-05 04:43:00.000 | auc | x |2013-01-04 20:00:00.000|

+---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+

|2013-01-05 17:22:50.000 |2013-01-05 18:00:00.000 | uwc | y |2013-01-05 17:22:50.000|

+---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+

|2013-01-05 18:00:00.000 |2013-01-05 18:32:40.000 | abc | y |2013-01-05 17:22:50.000|

+---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+

|2013-01-05 18:32:40.000 |2013-01-05 19:00:00.000 | dbc | y |2013-01-05 17:22:50.000|

+---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+

|2013-01-05 19:00:00.000 |2013-01-05 20:23:53.000 | auc | y |2013-01-05 17:22:50.000|

+---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+

|2013-01-08 23:40:00.000 |2013-01-09 03:40:40.000 | abc | x |2013-01-08 23:40:00.000|

+---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+

|2013-01-09 03:40:40.000 |2013-01-10 00:05:00.000 | dbc | x |2013-01-08 23:40:00.000|

+---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+

|2013-01-10 00:05:00.000 |2013-01-10 03:00:58.000 | auc | x |2013-01-08 23:40:00.000|

+---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+


Poderiam me ajustar a criar uma lógica para atualizar o campo "INICIO_TURNO", conforme mencionado acima no SQL SERVER 2012?


Observação:

Existem diversos funcionários (X, y, z, ...), e pode ou não existir turnos que atravessam o dia conforme mencionei nos exemplos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta,

 

É sempre a data/hora inicial.

Na segunda "tabela", mostrei mais detalhado isso.

 

Se tiver dúvida, por favor, avise.

Preciso muito dessa ajuda!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

um update simples não resolve ?

update tabela
set inicio_turno = STARTTIME 

 

seria isto ?

 

se é o mesmo dado pq outra coluna ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então gente,

 

Vou tentar explicar com o mesmo exemplo passado.

 

Segue abaixo o turno de um funcionário com 6 atividades, porém o início do turno é sempre a primeira atividade como está em azul, porém a primeira atividade pode estar no dia anterior conforme abaixo, ou pode estar no mesmo dia.

 

 

+---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+
| STARTTIME | ENDTIME |ATIVIDADE|FUNCIONARIO| INICIO_TURNO |
+---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+
|2013-01-01 22:00:00.000 |2013-01-02 01:00:00.000 | xbc | x |2013-01-01 22:00:00.000|
+---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+
|2013-01-02 01:00:00.000 |2013-01-02 02:50:00.000 | ihc | x |2013-01-01 22:00:00.000|
+---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+
|2013-01-02 02:50:00.000 |2013-01-02 03:00:00.000 | uwc | x |2013-01-01 22:00:00.000|
+---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+
|2013-01-02 03:00:00.000 |2013-01-02 03:30:20.000 | abc | x |2013-01-01 22:00:00.000|
+---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+
|2013-01-02 03:30:20.000 |2013-01-02 04:00:00.000 | dbc | x |2013-01-01 22:00:00.000|
+---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+
|2013-01-02 04:00:00.000 |2013-01-02 05:20:00.000 | auc | x |2013-01-01 22:00:00.000|
+---------------------------------+--------------------------------+-------------+-----------------+--------------------------------+

Compartilhar este post


Link para o post
Compartilhar em outros sites

minimo start por funcionario

 

select min(STARTTIME)
from tabela
where FUNCIONARIO = 'x'

atualizando

 

update tabela t1
set  INICIO_TURNO = (select min(STARTTIME)
                     from tabela t2
                      where t2.FUNCIONARIO = t1.funcionario)

grosso modo, pois é o STARTTIME menot por funcionário, creio que falta algum refimamento aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

Percebi seu post duplicado lá também, e como o Gapimex já tinha colocado uma CTE para este update, nem repliquei aqui.

Boa sorte.

 

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.