/****** Object: StoredProcedure [dbo].[stp_StatoProd_getByMacchina] Script Date: 04/05/2018 12:15:09 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /************************************* * STORED PROCEDURE stp_TC_getDtLastPzByMacchinaQta * recupera il record da TempiCicloRilevati per la macchina indicata lasciando il num di pz richiesto * * modif.: S.E.L. * il: 2018.05.04 **************************************/ create PROCEDURE [dbo].[stp_TC_getDtLastPzByMacchinaQta] ( @idxMacchina NVARCHAR(50) ,@DataOra DATETIME = NULL ,@NumPz2Left INT = 0 -- indica il numero di pezzi da lasciare... ) AS SET XACT_ABORT ON; BEGIN TRAN -- in primis: se dataora > adesso rimetto adesso SET @DataOra = CASE WHEN ISNULL(@DataOra,GETDATE()) >= GETDATE() THEN GETDATE() ELSE @DataOra END -- imposto valori accessori DECLARE @IdxODL INT = 0 DECLARE @DataInizioOdl DATETIME -- recupero da tab ODL il codice odl stesso e l'articolo data macchina e data/ora... SELECT @IdxODL = ISNULL(IdxODL,0), @DataInizioOdl = DataInizio FROM ODL WHERE IdxMacchina = @IdxMacchina AND DataInizio <= @DataOra AND ISNULL(DataFine, GETDATE()) >= @DataOra ;WITH cteLastPz AS ( -- recupero i dati dei pezzi prodotti alla data richiesta SELECT TOP(@NumPz2Left + 1) * FROM dbo.TempiCicloRilevati WHERE IdxMacchina = @idxMacchina AND DataOraRif BETWEEN @DataInizioOdl AND @DataOra ORDER BY DataOraRif DESC ) SELECT TOP 1 * FROM cteLastPz ORDER BY DataOraRif COMMIT TRAN RETURN