eccola:
codice:
------ recuperato con dts MA_DATE dal dbdwhpag del bs114
--
--select * FROM ma_date
DECLARE @matricola varchar(10)
DECLARE @inizio date
DECLARE @fine date
DECLARE @gg_ciclo int
,@gg2 int
,@cicli int
SET @fine = '2017-08-31'
SET @matricola --= '0000035539'
--= '0000035538'
--= '0000035642'
= '0000040852'
--
-----
--
TRUNCATE TABLE WWW_TURNAZIONE_MATRICOLA
INSERT INTO WWW_TURNAZIONE_MATRICOLA
SELECT dipen.azienda,dipen.matricola
,dipen_turnazioni.turnazione
,dipen_turnazioni.posizione posizione_START
,dipen_turnazioni.inizio,dipen_turnazioni.fine
,turnazioni.giorni,turnazioni.scorrimento
,turnazioni_cicli.posizione,turnazioni_cicli.causale,turnazioni_cicli.or_fisso
,orari.orlav
,ORDINE1 = CASE
WHEN turnazioni_cicli.posizione = dipen_turnazioni.posizione THEN 1000
WHEN turnazioni_cicli.posizione > dipen_turnazioni.posizione THEN 2000 + turnazioni_cicli.posizione
WHEN turnazioni_cicli.posizione < dipen_turnazioni.posizione THEN 3000 + turnazioni_cicli.posizione
ELSE 0
END
FROM dipen
INNER JOIN dipen_turnazioni on ( dipen.azienda = dipen_turnazioni.azienda
AND dipen.matricola = dipen_turnazioni.matricola )
INNER JOIN turnazioni on ( dipen_turnazioni.azienda = turnazioni.azienda
AND dipen_turnazioni.turnazione = turnazioni.turnazione )
INNER JOIN turnazioni_cicli on ( turnazioni.azienda = turnazioni_cicli.azienda
and turnazioni.turnazione = turnazioni_cicli.turnazione)
LEFT OUTER JOIN orari on ( turnazioni_cicli.azienda = orari.azienda
and turnazioni_cicli.or_fisso = orari.orario)
WHERE dipen.matricola = @matricola
AND ISNULL(dipen_turnazioni.fine,'2099-12-31') >= GETDATE()
ORDER BY ORDINE1 ,turnazioni_cicli.posizione
--
------
--
TRUNCATE TABLE WWW_SVILUPPO_MATRICOLA
INSERT INTO WWW_SVILUPPO_MATRICOLA
SELECT MA_DATE.DATA,WWW.*
FROM (SELECT DISTINCT azienda,matricola, turnazione,inizio,fine FROM WWW_TURNAZIONE_MATRICOLA) WWW
INNER JOIN MA_DATE ON (MA_DATE.DATA between WWW.inizio and @fine )
ORDER BY MA_DATE.DATA
--
-----
--
SELECT @gg_ciclo = count(*) FROM WWW_TURNAZIONE_MATRICOLA
print 'Turnazione su gg '
print @gg_ciclo
print ' '
SELECT @gg2 = cOunt(*)FROM WWW_SVILUPPO_MATRICOLA
print 'Giorni di sviluppo :'
print @gg2
print ' '
SET @cicli = (@gg2 / @gg_ciclo)
+1
print 'Turnazione nei gg di sviluppo:'
print @cicli
print ' '
SELECT @gg_ciclo GG_CICLO ,@gg2 GG2,@cicli CICLI
--
---===========================================================================================================
--
DECLARE @INDICE_CICLO INT
DECLARE CUR_CICLI
CURSOR FOR
SELECT
INDICE
FROM WWW_SVILUPPO_MATRICOLA
WHERE INDICE <= @CICLI -- 79 --
TRUNCATE TABLE WWW_RISULTA
--
-----
--
OPEN CUR_CICLI
FETCH NEXT
FROM CUR_CICLI
INTO @INDICE_CICLO
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO WWW_RISULTA
SELECT --TOP @gg_ciclo --7 --
SVI.*,TUR.causale,TUR.or_fisso,TUR.orlav,TUR.ORDINE1
FROM WWW_SVILUPPO_MATRICOLA SVI
INNER JOIN WWW_TURNAZIONE_MATRICOLA TUR ON (SVI.INDICE -((@INDICE_CICLO
-1) * @gg_ciclo )--7 --
= TUR.INDICE)
WHERE SVI.INDICE > (SELECT ISNULL(MAX(INDICE ),0) FROM WWW_RISULTA)
ORDER BY SVI.INDICE
FETCH NEXT
FROM CUR_CICLI
INTO @INDICE_CICLO
END
CLOSE CUR_CICLI
DEALLOCATE CUR_CICLI