Files
Samuele E. Locatelli 2b1479f315 spostamento update SQL
2018-05-03 15:06:47 +02:00

173 lines
4.4 KiB
Transact-SQL

set xact_abort on
go
begin transaction
go
set ANSI_NULLS on
go
-- =============================================
-- Author: Samuele E. Locatelli
-- Create date: 2011-02-20
-- Description:
-- =============================================
create PROCEDURE stp_zzz_rimuoviDuplicatiConsecutivi
-- Add the parameters for the stored procedure here
@idxMacchina int
AS
BEGIN
SET NOCOUNT ON;
DECLARE @InizioStato DATETIME, @IdxTipo INT, @MatricolaKanban NVARCHAR(50);
DECLARE @InizioStatoPrec DATETIME, @IdxTipoPrec INT, @MatricolaKanbanPrec NVARCHAR(50);
DECLARE @messaggio NVARCHAR(500);
-- mostro conteggio eventi
SELECT count(*), DATEPART(DD,InizioStato) AS inizio FROM EventList
WHERE IdxMacchina=37
GROUP BY DATEPART(DD,InizioStato)
-- inizializzo valori precedenti
SET @InizioStatoPrec = (SELECT Top 1 InizioStato FROM EventList WHERE idxMacchina = @idxMacchina ORDER BY InizioStato ASC);
SET @IdxTipoPrec = (SELECT Top 1 IdxTipo FROM EventList WHERE idxMacchina = @idxMacchina ORDER BY InizioStato ASC);
SET @MatricolaKanbanPrec = (SELECT Top 1 MatricolaKanban FROM EventList WHERE idxMacchina = @idxMacchina ORDER BY InizioStato ASC);
-- uso un cursore x percorrere i dati...
DECLARE eventiDuplicati CURSOR FOR
SELECT InizioStato, IdxTipo, MatricolaKanban
FROM EventList
WHERE IdxMacchina = @idxMacchina
ORDER BY InizioStato;
OPEN eventiDuplicati;
FETCH NEXT FROM eventiDuplicati
INTO @InizioStato, @IdxTipo,@MatricolaKanban;
WHILE @@FETCH_STATUS = 0
BEGIN
-- controllo: se uguali i valori ai precedenti elimino attuale...
IF((@InizioStato > @InizioStatoPrec) AND (@IdxTipo = @IdxTipoPrec) AND (@MatricolaKanban = @MatricolaKanbanPrec))
BEGIN
SELECT @messaggio = '--> Old tipo: ' + CAST(@IdxTipoPrec AS NVARCHAR(50)) + ' - new: ' + CAST(@IdxTipo AS NVARCHAR(50)) + ' | old time: ' + CAST(@InizioStatoPrec AS NVARCHAR(250)) + ' - new: ' +CAST(@InizioStato AS NVARCHAR(250)) + ' | old kanban: ' + CAST(@MatricolaKanbanPrec AS NVARCHAR(250)) + ' - new: ' +CAST(@MatricolaKanban AS NVARCHAR(250));
PRINT @messaggio;
-- elimino riga errata
DELETE FROM EventList
WHERE InizioStato=@InizioStato and IdxMacchina=@idxMacchina and IdxTipo=@IdxTipo and MatricolaKanban=@MatricolaKanban;
END
ELSE
BEGIN
SELECT @messaggio = 'Ok Old tipo: ' + CAST(@IdxTipoPrec AS NVARCHAR(50)) + ' - new: ' + CAST(@IdxTipo AS NVARCHAR(50)) + ' | old time: ' + CAST(@InizioStatoPrec AS NVARCHAR(250)) + ' - new: ' +CAST(@InizioStato AS NVARCHAR(250)) + ' | old kanban: ' + CAST(@MatricolaKanbanPrec AS NVARCHAR(250)) + ' - new: ' +CAST(@MatricolaKanban AS NVARCHAR(250));
--PRINT @messaggio;
END
SET @InizioStatoPrec = @InizioStato;
SET @IdxTipoPrec = @IdxTipo;
SET @MatricolaKanbanPrec = @MatricolaKanban;
-- Get the next values.
FETCH NEXT FROM eventiDuplicati
INTO @InizioStato, @IdxTipo, @MatricolaKanban;
END
CLOSE eventiDuplicati;
DEALLOCATE eventiDuplicati;
-- mostro conteggio eventi
SELECT count(*), DATEPART(DD,InizioStato) AS inizio FROM EventList
WHERE IdxMacchina=37
GROUP BY DATEPART(DD,InizioStato)
END
go
commit
go
set xact_abort on
go
begin transaction
go
set ANSI_NULLS on
go
/*************************************
* STORED PROCEDURE stp_TC_getCodArticoliByMacchinaPeriodo
* recupera tempi ciclo x machcian e periodo
*
* modif.: S.E.L. - 2010.12.18
**************************************/
create PROCEDURE stp_TC_getCodArticoliByMacchinaPeriodo
(
@IdxMacchina NVARCHAR(50),
@Inizio DATETIME,
@Fine DATETIME
)
AS
SELECT DISTINCT(CodArticolo) FROM TempiCicloRilevati
WHERE IdxMacchina = @IdxMacchina AND
(DataOraRif >= @Inizio) AND (DataOraRif <= @Fine)
RETURN
go
commit
go
set xact_abort on
go
begin transaction
go
set ANSI_NULLS on
go
/*************************************
* STORED PROCEDURE stp_TC_getByMacchinaPeriodoArticolo
* recupera tempi ciclo x macchina, articolo e periodo
*
* modif.: S.E.L. - 2010.12.18
**************************************/
create PROCEDURE stp_TC_getByMacchinaPeriodoArticolo
(
@IdxMacchina NVARCHAR(50),
@CodArticolo NVARCHAR(50),
@Inizio DATETIME,
@Fine DATETIME
)
AS
SELECT * FROM TempiCicloRilevati
WHERE IdxMacchina = @IdxMacchina AND CodArticolo = @CodArticolo AND
(DataOraRif >= @Inizio) AND (DataOraRif <= @Fine)
ORDER BY DataOraRif
RETURN
go
commit
go
alter table DatiMacchine add
constraint PK_DatiMacchine primary key(idxMacchina)
go
-- registro versione...
INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(230, GETDATE())
GO