Files
2021-03-26 17:17:28 +01:00

74 lines
1.7 KiB
Transact-SQL

set xact_abort on;
go
begin transaction;
go
set ANSI_NULLS on;
go
/**********************************************************
* STORED stp_freqProjByDipPeriodo
*
* elenco dei progetti/fasi per dipendente/periodo
*
* mod: S.E.L. 2013.02.20
*
**********************************************************/
alter PROCEDURE stp_freqProjByDipPeriodo
(
@idxDipendente INT = 0, -- 0 = tutti
@inizio DATETIME,
@fine DATETIME,
@maxRes INT = 999 -- num max risultati desiderati
)
AS
-- calcolo il totale dei risultati per prima cosa...
DECLARE @totNum AS INT = 1
DECLARE @tabFreq AS TABLE
(
nomeProj NVARCHAR(250)
,nomeFase NVARCHAR(250)
,qty DECIMAL(9,3)
,idxFase INT
,idxFaseComm INT
)
INSERT @tabFreq
SELECT TOP (@maxRes) nomeProj, nomeFase ,SUM(ra.oreTot) as qty, ra.idxFase, af.idxFaseAncest
FROM RegAttivita ra INNER JOIN AnagFasi af ON ra.idxFase=af.idxFase
INNER JOIN AnagProgetti ap ON af.idxProgetto=ap.idxProgetto
WHERE ra.inizio BETWEEN @inizio AND @fine
AND (ra.idxDipendente = @idxDipendente OR @idxDipendente = 0 )
GROUP BY nomeProj, nomeFase, ra.idxFase, af.idxFaseAncest
ORDER BY qty DESC
-- calcolo il totale
SELECT @totNum = ISNULL(SUM(qty),1) FROM @tabFreq
;WITH myCTE AS
(
SELECT idxFaseComm, idxFase, nomeProj, nomeFase, qty/@totNum as freq, qty, @totNum AS tot
FROM @tabFreq
)
-- restituisco tab con calcolo freq reale
SELECT af.nomeFase as nomeComm, tf.*
FROM myCTE tf INNER JOIN AnagFasi af ON tf.idxFaseComm = af.idxFase
RETURN
go
commit;
go
-- registro versione...
INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(359, GETDATE())
GO
SELECT * FROM LogUpdateDb ORDER BY Versione DESC