Create FUNCTION [C6MartPeriodico].[getTrimestre_Eff] ( @data datetime, @primo bit ) RETURNS VARCHAR(8) AS BEGIN -- Declare the return variable here DECLARE @retData VARCHAR(8) -- Add the T-SQL statements to compute the return value here IF @primo = 0 -- Restituisce l'ultimo giorno del trimestre precedente SET @retData = CASE WHEN @data <= CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreMarzo') THEN CAST(YEAR(@data) - 1 AS VARCHAR) + dbo.getParametro('TrimestreDicembre') WHEN @data > CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreMarzo') AND @data <= CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreGiugno') THEN CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreMarzo') WHEN @data > CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreGiugno') AND @data <= CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreSettembre') THEN CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreGiugno') WHEN @data > CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreSettembre') AND @data <= CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreDicembre') THEN CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreSettembre') END ELSE -- Restituisce il primo giorno del trimestre precedente SET @retData = CASE WHEN @data <= CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreMarzo') THEN CAST(YEAR(@data) - 1 AS VARCHAR) + SUBSTRING(dbo.getParametro('TrimestreDicembre'),1,2) + '01' WHEN @data > CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreMarzo') AND @data <= CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreGiugno') THEN CAST(YEAR(@data) AS VARCHAR) + SUBSTRING(dbo.getParametro('TrimestreMarzo'),1,2) + '01' WHEN @data > CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreGiugno') AND @data <= CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreSettembre') THEN CAST(YEAR(@data) AS VARCHAR) + SUBSTRING(dbo.getParametro('TrimestreGiugno'),1,2) + '01' WHEN @data > CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreSettembre') AND @data <= CAST(YEAR(@data) AS VARCHAR) + dbo.getParametro('TrimestreDicembre') THEN CAST(YEAR(@data) AS VARCHAR) + SUBSTRING(dbo.getParametro('TrimestreSettembre'),1,2) + '01' END -- Return the result of the function RETURN @retData ----- TEST ----------------------- -- SET @retData = '20151130' -- RETURN @retData END