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

49 lines
1.9 KiB
Transact-SQL

-----------------------------------------------------------------------------------------------
-- LA FUNZIONE TORNA L'INDICATORE DI VALUTAZIONE (MIFID 2) PER IL CLIENTE SPECIFICATO
-- IL DOMINIO DELL'INDICATORE PASSATO E':
-- (1) - RISCHIO MERCATO
-- (2) - RISCHIO CREDITO
-- (3) - CONCENTRAZIONE EMITTENTI
-- (4) - COMPLESSITA'
-- (5) - CONCENTRAZIONE IN PRODOTTI COMPLESSI
-- (6) - FREQUENZA DELLE OPERAZIONI
-- (7) - LIQUIDITA'/LIQUIDABILITA' (ORIZZONTE TEMPORALI DEGLI INVESTIMENTI)
--
-- select [C6MartPeriodico].[getIndicatoreValutazione] ('f','00247580970',default)
CREATE FUNCTION [C6MartPeriodico].[getIndicatoreValutazione]
(
@Rete char(1),
@CodiceFiscale varchar(16),
@indicatore smallint = 4
)
RETURNS VARCHAR(5)
AS
BEGIN
DECLARE @retData VARCHAR(5)
DECLARE @DataFineTrim VARCHAR(8)
SET @DataFineTrim = c6martperiodico.getTrimestre2(getDate(),0)
if @indicatore = 4
select @retData = case
when flgprof = 'S' then 'prof'
when flagpg = 1 and flgprof = 'N' and flagnqp = 'S' and flgprlrde = 'N' then '-1' --Massimiliano dice che va messo prima di tutti senza testare altri flag 17/5/2018
when upper(clcompl) = 'N' and
(select count(*) from [C6StagingPeriodico].[WSEIAN2] where codfis = @CodiceFiscale and dttrim = @DataFineTrim and NOCOMPL='S') > 0 then '0'
when upper(clcompl) = 'N' and flagpg = 0 then '0'
when upper(clcompl) = 'N' and flagpg = 1 and flgprlrde = 'N' then '0'
when upper(clcompl) = 'S' then '1'
end
from C6STAGINGPERIODICO.WSEIAN2
where 1=1
AND RETE = @Rete
and codfis like
CASE when @CodiceFiscale like '%FF@%'THEN '%%'
ELSE @CodiceFiscale
END
and codman =
CASE when @CodiceFiscale like '%FF@%' THEN substring(@CodiceFiscale, 4,len(@CodiceFiscale)-3)
ELSE ''
END
and dttrim = @DataFineTrim
ELSE SET @retData = 'NN' -- PER IL MOMENTO RITORNO SOLO L'INDICATORE COMPLESSITA'
return @retData
END