Consulta

02/11/2005 - 20:48 por Julio | Informe spam
Hola grupo

Tengo la siguiente tabla

EntradaID EmpeladoID Movimiento Fecha Tipo resultado
1 1 Entrada 21/06/01 Contrato
21/06/01
2 1 Salida 15/12/02
Liquidacion 21/01/01
3 1 Entrada 30/12/02 Contrato
21/01/01
4 1 Salida 02/11/05 cancelado
21/01/01
5 1 Entrada 01/01/07 contratado
01/01/07
6 1 Salida 01/01/08 Renuncia
01/01/07
7 1 Entrada 01/01/09 contratado
01/01/09

Lo que necesito es saber la fecha que tiene el empelado en la empresa
partiendo de que:

Viendo los primeros tres ejemplo si el empelado fue contratado su fecha en
la empresa
es 21/06/01 despues fue liquidado la cual no se toma en cuenta, pero luego
fue contratado
y la fecha que tiene en la empresa es 21/06/01 ya que la liquidacion es de
la empresa y su tiempo
total se le reconoce.

Pero cuando el empleado es cancelado o renuncia y luego se contrata de nuevo
su fecha en la empresa
ya es cuando lo contratan no la primera que es 21/06/01.

Entonces l oque quiero es hacer una vista para todos los empelados para
luego con la fecha actual calcular el tiempo
que tiene en la empresa.

Gracias de antes manos.
 

Leer las respuestas

#1 Alejandro Mesa
02/11/2005 - 21:50 | Informe spam
Trata:

use northwind
go

create table t1 (
EntradaID int not null primary key,
EmpleadoID int not null,
Movimiento varchar(25) not null,
Fecha datetime not null,
Tipo varchar(25) not null,
resultado datetime
)
go

insert into t1 values(1, 1, 'Entrada', '20010621', 'Contrato', '20010621')
insert into t1 values(2, 1, 'Salida', '20021215', 'Liquidacion', '20010121')
insert into t1 values(3, 1, 'Entrada', '20021230', 'Contrato', '20010121')
insert into t1 values(4, 1, 'Salida', '20051102', 'Cancelacion', '20010121')
insert into t1 values(5, 1, 'Entrada', '20070101', 'Contrato', '20070101')
insert into t1 values(6, 1, 'Salida', '20080101', 'Renuncia', '20070101')
insert into t1 values(7, 1, 'Entrada', '20090101', 'Contrato', '20090101')
go

select EmpleadoID, min(Fecha) as min_fecha
from t1 as a
where
Movimiento = 'Entrada'
and Tipo = 'Contrato'
and not exists (
select *
from t1 as b
where
b.entradaID > a.EntradaID
and Movimiento = 'Salida'
and Tipo in ('Cancelacion', 'Renuncia')
)
group by EmpleadoID
go

drop table t1
go


AMB

"Julio" wrote:

Hola grupo

Tengo la siguiente tabla

EntradaID EmpeladoID Movimiento Fecha Tipo resultado
1 1 Entrada 21/06/01 Contrato
21/06/01
2 1 Salida 15/12/02
Liquidacion 21/01/01
3 1 Entrada 30/12/02 Contrato
21/01/01
4 1 Salida 02/11/05 cancelado
21/01/01
5 1 Entrada 01/01/07 contratado
01/01/07
6 1 Salida 01/01/08 Renuncia
01/01/07
7 1 Entrada 01/01/09 contratado
01/01/09

Lo que necesito es saber la fecha que tiene el empelado en la empresa
partiendo de que:

Viendo los primeros tres ejemplo si el empelado fue contratado su fecha en
la empresa
es 21/06/01 despues fue liquidado la cual no se toma en cuenta, pero luego
fue contratado
y la fecha que tiene en la empresa es 21/06/01 ya que la liquidacion es de
la empresa y su tiempo
total se le reconoce.

Pero cuando el empleado es cancelado o renuncia y luego se contrata de nuevo
su fecha en la empresa
ya es cuando lo contratan no la primera que es 21/06/01.

Entonces l oque quiero es hacer una vista para todos los empelados para
luego con la fecha actual calcular el tiempo
que tiene en la empresa.

Gracias de antes manos.




Preguntas similares