1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
/*
Création d'une table temporaire afin de stocker les expérimentation
situées dans une activitée n'était pas la dernière de la
branche/hiérarchie, ainsi que le code d'activité où ils devraient être
localisées.
*/
DECLARE @TmpExpInvalide TABLE
(
Tmp_expCode INT,
Tmp_actCode INT,
Tmp_actWBS NVARCHAR(40),
Tmp_actProjetCode INT,
Tmp_DeplacerDansSousActivite INT
)
/*
Trouver les expérimentations qui ne sont pas dans la dernière
branche d'une activité
*/
INSERT INTO @TmpExpInvalide(Tmp_expCode,Tmp_actCode, Tmp_actWBS, Tmp_actProjetCode)
SELECT TbExp.expCode, TbActivite.actCode, TbActivite.actWBS, TbActivite.actProjetCode
FROM Activite AS TbActivite
INNER JOIN Experimentation AS TbExp ON TbActivite.actCode = TbExp.expActCode
WHERE EXISTS
(
SELECT actCode
FROM Activite AS TbNotExists
WHERE TbNotExists.actProjetCode = TbActivite.actProjetCode
AND SUBSTRING(TbNotExists.actWBS, 1, LEN(TbActivite.actWBS)) = TbActivite.actWBS
AND LEN(TbNotExists.actWBS) > LEN(TbActivite.actWBS)
)
/*
Mise à jour du code dans la table temporaire, de l'activité
où devrait plutot se trouver l'expérimentation
*/
UPDATE @TmpExpInvalide
SET Tmp_DeplacerDansSousActivite =
(
SELECT TOP 1 actCode
FROM Activite AS q
WHERE q.actProjetCode = Tmp_actProjetCode
AND q.actWBS LIKE (Tmp_actWBS + '%')
ORDER BY LEN(q.actWBS) DESC
)
/*
Mise à jour de la position des expérimentation
*/
UPDATE Experimentation
SET expActCode = TmpTable.Tmp_DeplacerDansSousActivite
FROM @TmpExpInvalide AS TmpTable
WHERE expCode = TmpTable.Tmp_expCode |
Partager