Update avec la valeur de la colonne précédente
Bonjour tout le monde,
Je veux mettre à jour ma table_1 et voici le scénario :
Je travaille période par période (de la plus récente à la plus vieille) pour ceux qui ont au moins une catégorie (cat) vide.
Je prend la cat renseignée la plus récente sur la période.
Sinon sur celles d'avant
Sinon sur celles d'après.
Je propage sur le futur de la période
Si vide (ne devrait pas arriver).
Je remonte en arrière sur la période.
Si vide on met à jour.
Si j'ai une valeur différente, c'est celle-là que je propagera au retour en arrière.
Une fois que la période est terminée, je passe à la période précédente.
Les cat a mettre a jour (avec cette requête je cherche mes t1.id qui ont au moins 1 cat not null) :
Code:
1 2 3 4
| SELECT t1.date_a, t1.date_fin, t1.cat, t1.id
FROM table_1 t1
WHERE t1.cat is null
and exists (SELECT 'x' FROM table_1 t2 WHERE t2.id = t1.id AND t2.cat is not null) |
Résultat :
date_a |
date_fin |
cat |
id |
15/10/2011 |
|
|
1020930 |
05/01/2015 |
|
|
1013145 |
... |
... |
... |
... |
Je prend par exemple le t1.id = 1020930
Code:
1 2 3 4 5 6
| ----*** 02 les périodes, de la plus récente à la plus vieille
SELECT t2.periode, t1.date_a, t1.date_fin, t1.cat, t1.id
FROM table_1 t1
INNER JOIN table_2 t2 ON t2.id = t1.idt1
WHERE t1.id = 1020930
ORDER BY t2.date_debut desc, t1.date_a desc |
Résultat :
periode |
date_a |
date_fin |
cat |
id |
2012A |
19/09/2013 |
|
6891 |
1020930 |
2012A |
12/07/2012 |
18/09/2013 |
|
1020930 |
2011A |
14/07/2011 |
|
|
1020930 |
2011A |
03/03/2011 |
13/07/2011 |
|
1020930 |
2010A |
21/07/2011 |
|
6891 |
1020930 |
2010A |
01/01/2009 |
20/07/2011 |
|
1020930 |
Merci d'avance :)