Bonjour

voici mon souci : je possède une table historisant l'occupation de logements. Pour chaque logement on a donc un code correspondant au statut d'occupation et à une date donnée (date de début du statut).
Je souhaite rajouter une colonne qui serait la date de fin de statut et alimentée avec la date de début du statut suivant - 1 jour.

Illustration :

Table LGT_OCCUP
ID_LGT --- COD_OCCU ---- DATEDEB ------ DATEFIN
----------------------------------------------------
1 ________Vacant ______01/01/2007_____31/05/2007
2 ________Travaux _____01/06/2007_____30/06/2007
3 ________Occupé______01/07/2007

J'ai tenté un update avec un RANK mais sans parvenir à mes fins (erreur ORA-30483). Mon problème c'est la recherche du statut suivant.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
UPDATE LGT_OCCUP
SET DATEFIN = 
(SELECT A.DATEDEB
 FROM (SELECT ID_LGT, DATEDEB, 
              RANK() OVER (PARTITION BY ID_LGT ORDER BY DATEDEB) as RANG
              FROM LGT_OCCUP) A
            WHERE 
              LGT_OCCUP.ID_LGT = A.ID_LGT
              and RANK() OVER (PARTITION BY ID_LGT ORDER BY DATEDEB) = rang +1
        )
        and LGT_OCCUP.DATEFIN is null ;
Est ce que je peux reussir à alimenter ce champ avec cette méthode ?
Merci de votre aide