Machetes Varios

apuntes varios erp cwa logic ( ahora SoftLand Logic ) – sql y veremos que otra cosa

Funcion Usr_FN_PeriodAdd


Sirve para agregar meses a un Periodo.

Ej : tengo el campo Period con 200801 y quiere restarle 2 meses

SELECT dbo.USR_FN_PeriodAdd(-2,200801)

arroja

200711

el código :

 

CREATE FUNCTION [dbo].[USR_FN_PeriodAdd]
(
	-- Add the parameters for the function here
	@MESES INTEGER,@PERIOD NUMERIC(6,0)
)
RETURNS NUMERIC(6,0)
AS
BEGIN

	DECLARE @Result NUMERIC(6,0),
			@MES INTEGER,
			@ANO INTEGER,
			@INCREMES INTEGER,
			@INCREANOS INTEGER

	SELECT @MES = CAST(RIGHT(CAST(@PERIOD AS VARCHAR(6)),2) AS INTEGER )
	SELECT @ANO = CAST(LEFT(CAST(@PERIOD AS VARCHAR(6)),4) AS INTEGER )

	SELECT @INCREANOS  = @MESES/12
	SELECT @INCREMES = @MESES%12

	SELECT @MES = @MES + @INCREMES
	SELECT @ANO = @ANO + @INCREANOS	

	IF @MES <=0
	BEGIN
		SELECT @MES = 12-ABS(@MES)
		SELECT @ANO = @ANO -1
	END

	SELECT @Result = @ANO * 100 + @MES
	RETURN @Result

END

 

septiembre 10, 2008 - Posted by | Transact SQL | ,

1 comentario »

  1. Solo me funciono para restar meses a un periodo, si quiero sumar no funciona, porque falta el control de paso de año al sumar
    Gracias igual , apenas lo corrija te lo mando

    Comentario por Gustavo Saturansky | abril 30, 2009 | Responder


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: