Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Cuantos dias me quedan por sacar???

Estas en el tema de Cuantos dias me quedan por sacar??? en el foro de SQL Server en Foros del Web. Buenas, aqui estoy otra vez molestando, para ver si me pueden sacar de un pozo, paso a comentarles mi duda: Tengo una tabla donde a ...
  #1 (permalink)  
Antiguo 07/09/2007, 15:33
Avatar de lanzi  
Fecha de Ingreso: noviembre-2005
Ubicación: BUENOS AIRES
Mensajes: 55
Antigüedad: 18 años, 5 meses
Puntos: 0
Pregunta Cuantos dias me quedan por sacar???

Buenas, aqui estoy otra vez molestando, para ver si me pueden sacar de un pozo, paso a comentarles mi duda:
Tengo una tabla donde a cada persona le corresponde una fecha1 (fecha de ingreso), y de acuerdo al tiempo que hace que esta esta persona trabaja aca, le correspondera una cantidad de dias de vacaciones a saber si tiene menos de 5, 20 dias, mas de 5 años 25 dias, mas de 10, 30 dias y asi, si tenemos en cuante que estas personas pueden sacar 10 de los 20 dias de licencia y despues los otros por ejemplo, (o 5, 15 y despues los otros 10) lo que se desea saber es lo siguiente:
¿Como hago para saber en base a la cantidad de dias que puede sacar de vacaciones y habiendose o no tomado algunos dias LA CANTIDAD DE DIAS QUE LE QUEDAN POR SACAR?

ME QUEDARIA ALGO ASI:
ID_PERSONA FECHA1 CANT_DE_DIAS SACO DIAS_QUE_LE_QUEDAN
2154 21/12/78 30 5 25
1781 05/09/2000 25 0 25
  #2 (permalink)  
Antiguo 07/09/2007, 17:43
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Re: Cuantos dias me quedan por sacar???

lanzi

Debo suponer que intervienen otras tablas o catalogos, como por ejemplo, los dias que corresponden por año, ¿No?, en fin, es una simple RESTA, entre lo que tienen derecho y lo que ya han disfrutado, ¿Cierto?
  #3 (permalink)  
Antiguo 10/09/2007, 06:53
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Re: Cuantos dias me quedan por sacar???

Agrega la estructura de tus tablas y asi te podran ayudar con tu consulta.

Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #4 (permalink)  
Antiguo 10/09/2007, 12:23
Avatar de lanzi  
Fecha de Ingreso: noviembre-2005
Ubicación: BUENOS AIRES
Mensajes: 55
Antigüedad: 18 años, 5 meses
Puntos: 0
Re: Cuantos dias me quedan por sacar???

CREI QUE ME IBA A SER FACIL PERO ME EQUIVOQUE!!! ESTE ES EL STORED PROCEDURE QUE HICE, PERO COMO HAGO PARA QUE ME DE LA DIF. ENTRE LOS CAMPOS EN LO QUE LLAMO "CUENTA"? ME TIRA SIEMPRE NULL...
ALTER PROCEDURE [dbo].[CARGAR_DATOS_EN_VACACIONES]
@ID INT
AS
SELECT PERSONA.ID_PERSONA,
F_DE_ING,
F_DE_VAC,
DIAS_DE_VAC,
CUENTA = DIAS_QUE_CORR - DIAS_DE_VAC ,
DIAS_QUE_CORR =
CASE
WHEN YEAR (GETDATE()) - YEAR(F_DE_ING) BETWEEN 0 AND 5 THEN '20'
WHEN YEAR (GETDATE()) - YEAR(F_DE_ING) BETWEEN 6 AND 10 THEN '25'
WHEN YEAR (GETDATE()) - YEAR(F_DE_ING) BETWEEN 11 AND 15 THEN '30'
WHEN YEAR (GETDATE()) - YEAR(F_DE_ING) BETWEEN 16 AND 20 THEN '35'
ELSE '40'
END
FROM
dbo.ASC INNER JOIN
dbo.GR ON dbo.ASC.Id_Gr = dbo.GR.Id_Gr INNER JOIN
dbo.PERSONA ON dbo.ASC.Id_Persona = dbo.PERSONA.Id_Persona INNER JOIN
dbo.VACACIONES ON dbo.PERSONA.Id_Persona = dbo.VACACIONES.Id_Persona INNER JOIN
WHERE (dbo.VACACIONES.TIPO_VACACIONES = 'ANUAL') AND
(dbo.VACACIONES.F_DE_VAC > '2007/01/01') AND
(@ID = PERSONA.ID_PERSONA)

Última edición por lanzi; 10/09/2007 a las 16:37 Razón: ME EQUIVOQUE
  #5 (permalink)  
Antiguo 10/09/2007, 18:24
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Re: Cuantos dias me quedan por sacar???

ALTER PROCEDURE [dbo].[CARGAR_DATOS_EN_VACACIONES]
@ID INT
AS
BEGIN
SET NOCOUNT ON
SELECT PERSONA.ID_PERSONA,
F_DE_ING,
F_DE_VAC,
DIAS_DE_VAC,
CUENTA =
((CASE
WHEN YEAR (GETDATE()) - YEAR(F_DE_ING) BETWEEN 0 AND 5 THEN 20
WHEN YEAR (GETDATE()) - YEAR(F_DE_ING) BETWEEN 6 AND 10 THEN 25
WHEN YEAR (GETDATE()) - YEAR(F_DE_ING) BETWEEN 11 AND 15 THEN 30
WHEN YEAR (GETDATE()) - YEAR(F_DE_ING) BETWEEN 16 AND 20 THEN 35
ELSE 40
END) - DIAS_DE_VAC) ,
DIAS_QUE_CORR =
CASE
WHEN YEAR (GETDATE()) - YEAR(F_DE_ING) BETWEEN 0 AND 5 THEN 20
WHEN YEAR (GETDATE()) - YEAR(F_DE_ING) BETWEEN 6 AND 10 THEN 25
WHEN YEAR (GETDATE()) - YEAR(F_DE_ING) BETWEEN 11 AND 15 THEN 30
WHEN YEAR (GETDATE()) - YEAR(F_DE_ING) BETWEEN 16 AND 20 THEN 35
ELSE 40
END
FROM
dbo.ASC INNER JOIN
dbo.GR ON dbo.ASC.Id_Gr = dbo.GR.Id_Gr INNER JOIN
dbo.PERSONA ON dbo.ASC.Id_Persona = dbo.PERSONA.Id_Persona INNER JOIN
dbo.VACACIONES ON dbo.PERSONA.Id_Persona = dbo.VACACIONES.Id_Persona INNER JOIN
WHERE (dbo.VACACIONES.TIPO_VACACIONES = 'ANUAL') AND
(dbo.VACACIONES.F_DE_VAC > '2007/01/01') AND
(@ID = PERSONA.ID_PERSONA)
END
  #6 (permalink)  
Antiguo 11/09/2007, 14:05
Avatar de lanzi  
Fecha de Ingreso: noviembre-2005
Ubicación: BUENOS AIRES
Mensajes: 55
Antigüedad: 18 años, 5 meses
Puntos: 0
Re: Cuantos dias me quedan por sacar???

GRACIAS A TODOS!!! Pude solucionarlo con su ayuda, y tambien con un poco de "Prueba y Error", por si le sirve a alguien el codigo que use al final fue el siguiente:
ALTER PROCEDURE [dbo].[CARGAR_DATOS_EN_VACACIONES]
@ID INT
AS
SELECT
DIAS_QUE_LE_QUEDAN =
((CASE
WHEN YEAR (GETDATE()) - YEAR(F_DE_ING) BETWEEN 0 AND 5 THEN 20
-
(SUM(DIAS_DE_LICENCIA))

WHEN YEAR (GETDATE()) - YEAR(F_DE_ING) BETWEEN 6 AND 10 THEN 25
-
(SUM(DIAS_DE_LICENCIA))

WHEN YEAR (GETDATE()) - YEAR(F_DE_ING) BETWEEN 11 AND 15 THEN 30
-
(SUM(DIAS_DE_LICENCIA))

WHEN YEAR (GETDATE()) - YEAR(F_DE_ING) BETWEEN 16 AND 20 THEN 35
-
(SUM(DIAS_DE_LICENCIA))

ELSE 40
-
(SUM(DIAS_DE_LICENCIA))

END)

FROM...

WHERE...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:09.