-- richiama update x sistemazione voci PERM --> MPP BEGIN TRAN ; WITH cte as ( SELECT g.dataLav ,g.idxDipendente ,codGiust ,minuti ,automatico ,dbo.f_chkFunDip(g.idxDipendente) AS chk ,dbo.f_chkFunDipMin(g.idxDipendente,g.dataLav,'MPP') AS minChk -- calcolo gli eventuali minuti MPP ,t.minArcoPres ,t.minLav ,t.minArcoPres-t.minLav as chkDiff FROM dbo.Giustificativi AS g LEFT JOIN TimbratureExpl AS t ON g.idxDipendente = t.idxDipendente AND g.dataLav = t.dataLav WHERE codGiust = 'PERM' AND minuti <= 60 AND dbo.f_chkFunDip(g.idxDipendente) <> '' AND minuti = dbo.f_chkFunDipMin(g.idxDipendente,g.dataLav,'MPP') ) UPDATE dbo.Giustificativi SET codGiust = 'MPP' FROM dbo.Giustificativi AS g INNER JOIN cte ON g.idxDipendente = cte.idxDipendente AND g.dataLav = cte.dataLav AND g.codGiust = 'PERM' AND g.minuti = cte.minuti -- test SELECT g.dataLav ,g.idxDipendente ,codGiust ,minuti ,automatico ,dbo.f_chkFunDip(g.idxDipendente) ,dbo.f_chkFunDipMin(g.idxDipendente,g.dataLav,'MPP') -- calcolo gli eventuali minuti MPP ,t.minArcoPres ,t.minLav ,t.minArcoPres-t.minLav FROM dbo.Giustificativi AS g LEFT JOIN TimbratureExpl AS t ON g.idxDipendente = t.idxDipendente AND g.dataLav = t.dataLav WHERE codGiust = 'MPP' AND minuti <= 60 AND dbo.f_chkFunDip(g.idxDipendente) <> '' AND minuti = dbo.f_chkFunDipMin(g.idxDipendente,g.dataLav,'MPP') COMMIT -- ricalcolo giornate DECLARE @RC int DECLARE @idxDipendente int DECLARE @inizio datetime DECLARE @fine datetime EXECUTE @RC = [dbo].[stp_ricalcolaTimbExpl_byPeriodoUser] 0 ,'20130301' ,'20130501' GO -- registro versione... INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(330, GETDATE()) GO SELECT * FROM LogUpdateDb ORDER BY Versione DESC