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

Select - condiciones de fecha

Estas en el tema de Select - condiciones de fecha en el foro de SQL Server en Foros del Web. como Seleccionar de una tabla llamada ESTUDIANTES (id, nombre, fecha_ingreso, mensualidad) e insertarlos en otra tabla llamada PAGO(id_estudiante, monto) . Teniendo en cuenta que el ...
  #1 (permalink)  
Antiguo 05/04/2009, 22:54
 
Fecha de Ingreso: abril-2008
Ubicación: Santo Domingo, Republica Dominicana
Mensajes: 53
Antigüedad: 16 años, 7 meses
Puntos: 0
Select - condiciones de fecha

como Seleccionar de una tabla llamada ESTUDIANTES (id, nombre, fecha_ingreso, mensualidad) e insertarlos en otra tabla llamada PAGO(id_estudiante, monto) .

Teniendo en cuenta que el 'monto' de los estudiantes que llevan dos años o mas es el 10% de la mensualidad y los que llevan 3 años o mas es el 5% de la mensualidad.

Alguien que me aporte?
  #2 (permalink)  
Antiguo 06/04/2009, 06:39
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 11 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
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 22:20.