Ver Mensaje Individual
  #2 (permalink)  
Antiguo 06/04/2009, 06:39
Avatar de Andres95
Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Respuesta: Select - condiciones de fecha

Aunque me suena mas logico que los que tienen mayor antiguedad deberian tener el mayor descuento...


Código:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[fnYearsDiff]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[fnYearsDiff]
GO

CREATE FUNCTION dbo.fnYearsDiff(@date1 datetime , @date2 datetime)
RETURNS INTEGER
AS
BEGIN
    DECLARE @YearsDiff INTEGER

    SET @date1 = convert(varchar, @date1, 112)
    SET @date2 = convert(varchar, @date2, 112)


    SET @YearsDiff = datediff(yy, @date1, @date2)
    
    IF (dateadd(yy, datediff(yy, @date1, @date2), @date1) > @date2) 
        SET @YearsDiff = @YearsDiff  - 1
    
    
    return @YearsDiff
END

GO



INSERT INTO PAGO(id_estudiante, monto)
SELECT [Id], 
       CASE WHEN dbo.fnYearsDiff(fecha_ingreso, getdate()) >= 3 THEN (mensualidad * .95)  -- 5 %
            WHEN dbo.fnYearsDiff(fecha_ingreso, getdate()) >= 2 THEN (mensualidad * .90)  -- 10%
            ELSE mensualidad END
FROM  ESTUDIANTES
Espero te sirva...

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.

Última edición por Andres95; 06/04/2009 a las 06:59