79 lines
4.8 KiB
Transact-SQL
79 lines
4.8 KiB
Transact-SQL
-- =============================================
|
|
-- Author: <Author,,Name>
|
|
-- Create date: <Create Date, ,>
|
|
-- Description: <Description, ,>
|
|
-- =============================================
|
|
--select [C6MartPeriodico].[getTrimestre_New](getdate(),0)
|
|
--select [C6MartPeriodico].[getTrimestre_New](getdate(),1)
|
|
CREATE FUNCTION [C6MartPeriodico].[getTrimestre_New]
|
|
(
|
|
@data datetime,
|
|
@primo bit
|
|
)
|
|
RETURNS VARCHAR(8)
|
|
AS
|
|
BEGIN
|
|
-- Declare the return variable here
|
|
DECLARE @retData VARCHAR(8)
|
|
-- Se siamo in Trimestrale effettiva
|
|
if CAST(month(@data) AS VARCHAR) in ('10','1','4','7')
|
|
-- 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;
|
|
else
|
|
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;
|
|
--PER SIMULAZIONE (Commentare x Trimestrale)------------
|
|
--IF @primo = 0
|
|
-- -- Impostare Data Congelamento Dati
|
|
-- --SET @retData = '20150228'ToDo Fc : test DQ
|
|
-- --SET @retData = '20151130'
|
|
-- --SET @retData = '20160229'
|
|
-- --SET @retData = '20160531'
|
|
-- --SET @retData = '20160831'
|
|
-- --SET @retData = '20161130'
|
|
-- --SET @retData = '20170228'
|
|
-- --SET @retData = '20170531'
|
|
-- --SET @retData = '20170831'
|
|
-- --SET @retData = '20171130'
|
|
-- --SET @retData = '20180228'
|
|
-- --SET @retData = '20180531'
|
|
-- SET @retData = '20180831'
|
|
--ELSE
|
|
-- -- Impostare Primo giorno del mese di Simulazione
|
|
-- --SET @retData = '20150301'ToDo Fc : test DQ
|
|
-- --SET @retData = '20151201'
|
|
-- --SET @retData = '20160301'
|
|
-- --SET @retData = '20160601'
|
|
-- --SET @retData = '20160901'
|
|
-- --SET @retData = '20161201'
|
|
-- --SET @retData = '20170301'
|
|
-- --SET @retData = '20170601'
|
|
-- --SET @retData = '20170901'
|
|
-- --SET @retData = '20171201'
|
|
-- --SET @retData = '20180301'
|
|
-- --SET @retData = '20180601'
|
|
-- SET @retData = '20180901'
|
|
----------------------------------------------------------
|
|
-- Return the result of the function
|
|
RETURN @retData
|
|
----- TEST -----------------------
|
|
-- SET @retData = '20151130'
|
|
-- RETURN @retData
|
|
END |