PDC_REPORT_CreazioneDB/sql/storedCollaudo/dbo_test_S80All_fc.sql
2025-06-06 19:02:52 +02:00

158 lines
3.8 KiB
Transact-SQL

-- Schema: dbo
-- Stored Procedure: test_S80All_fc
CREATE procedure [dbo].[test_S80All_fc]
AS
BEGIN
/*
Purpose: Calculate the total quantity and sales of the product in
product wise.
Input : No input specified. It will calculate for all the products
in Product Master table.
Output : ProductID,ProductName,Total Quantity and Grand Total of
sale.
Method : The report generated without using the Cursor
-----------------------------------------------------------------------
********************* Modification History *************************
-----------------------------------------------------------------------
S.No Name Date Version
-----------------------------------------------------------------------
1. Erode Senthilkumar Sep 01, 2009 1.0
-----------------------------------------------------------------------
*/
SET NOCOUNT ON
SET XACT_ABORT ON
DECLARE @ProductID INT
DECLARE @ProductName VARCHAR(100)
DECLARE @TotalQty INT
DECLARE @Total MONEY
DECLARE @Index INT
DECLARE @RecordCnt INT
DECLARE @tab TABLE(
id INT IDENTITY(1,1)
,rete char(1)
,codicefiscale varchar(16)
,totCC int
,totNoCC int
)
DECLARE @testTab TABLE
(
id INT IDENTITY(1,1)
,rete char(1)
,codicefiscale VARCHAR(100)
,CountCC INT
,CountNoCC int
)
DECLARE @Rete char(1)
DECLARE @CodiceFiscale varchar(16)
-- Recupero data congelamento SEI
DECLARE @MONIT_INIT INT
DECLARE @DataCongelamento DATETIME
DECLARE @MONIT_ATTIV INT
DECLARE @AGGR INT
declare @contaCC as int
declare @contapos as int
SET @DataCongelamento = C6MartPeriodico.getDataCongelamento()
SET @MONIT_ATTIV=0
SET @MONIT_INIT = 0
SELECT @Index = 1
INSERT INTO @tab(rete,codicefiscale,totCC,totNoCC)
select rete,cod_fiscale
,sum ( case when tipo_prodotto ='CC' then tot else 0 end ) as cc
,sum ( case when tipo_prodotto <>'CC' then tot else 0 end ) as nocc
from
( select rete,cod_fiscale,tipo_prodotto,count(*) tot
from c6martperiodico.patrimonio_Bf
--where cod_fiscale = @codiceFiscale and rete = @rete
group by rete,cod_fiscale,tipo_prodotto
) as gr
group by rete,cod_fiscale
SELECT @RecordCnt = COUNT(id) FROM @tab
WHILE (@Index <= @RecordCnt)
BEGIN
SELECT @rete=rete
,@codicefiscale=codicefiscale
,@contacc=totCC
,@contapos=totNoCC
FROM @tab WHERE id = @Index
SELECT @MONIT_INIT = COUNT(*)
FROM
C6MARTPERIODICO.MONITORAGGIO_INIZIALE
WHERE
RETE = @Rete AND
COD_FISCALE = @CodiceFiscale
SELECT @MONIT_ATTIV=COUNT(*)
FROM
C6MARTPERIODICO.MONITORAGGIO_ATTUALE
WHERE
RETE = @Rete AND
COD_FISCALE = @CodiceFiscale
SELECT @AGGR=COUNT(*)
FROM
C6MARTPERIODICO.RISCHIO_AGGREGATO
WHERE
RETE = @Rete AND
COD_FISCALE = @CodiceFiscale
IF (@MONIT_ATTIV > 0 AND @AGGR > 0 AND @MONIT_INIT > 0)
BEGIN
-- Attivazione monitoraggio
-- nuova versione da testare
insert into c6martperiodico.tb_S80BisEvoluzioneRischio
SELECT
@rete,
@codicefiscale,
1 AS Fase,
INI.DATA_FOTO AS DataFase,
INI.VAR_MAX_PROFILO AS VarMassimoProfiloFinanziario,
--V
CASE
WHEN INI.VAR_COMPLESSIVO IS NULL THEN INI.VAR_COMPLESSIVO
ELSE ROUND(INI.VAR_COMPLESSIVO,2)
END AS VarComplessivo,
INI.VAR_COPERTURA AS Copertura,
INI.RISKCLASS,
INI.RISKCLASSMAX,
case
when INI.RISKCLASS is null then 'n.d.'
when INI.RISKCLASS = 0 then 'n.a.'
else null
end as RiskClassString,
case
when INI.RISKCLASSMAX is null then 'n.d.'
when INI.RISKCLASSMAX = 0 then 'n.a.'
else null
end as RiskClassMaxString
FROM
C6MartPeriodi