74 lines
1.7 KiB
Transact-SQL
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 |