Files
MoonPro.net/SQL Utils/V5.1/MoonPro_1805.744.sql
2018-05-04 15:45:04 +02:00

57 lines
3.1 KiB
Transact-SQL


/****** 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