PDC_REPORT_CreazioneDB/sql/Produzione/funzioni/C6MartPeriodico_getTrimestre_Eff.sql
2025-06-10 16:47:41 +02:00

31 lines
2.4 KiB
Transact-SQL

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