{Oracle} requête avec boucle

Fermé
amben - 26 août 2009 à 11:11
kassabmo Messages postés 1 Date d'inscription lundi 19 juillet 2010 Statut Membre Dernière intervention 6 avril 2011 - 6 avril 2011 à 12:07
Bonjour,

je cherche depuis quelques jours une solution pour faire une requete.

Il s'agit dans le requête de supprimer dans une table toutes les lignes ou la date (en colonne) est antérieure à 4ans sauf si elle est la dernière de son année.

Par exemple
1 enregistrement contient la date: 12/12/86
un autre contient la date 30/12/86

Ca correspond à plus de 4 annnées passées, je supprime la ligne 1 mais je garde la ligne 2.

Bon, a mon avis il faut utiliser un curseur.

car avec cette requete ca ne marche pas :

DELETE FROM ma_table
WHERE trunc(ma_date) < add_months(TRUNC(sysdate),-48)
AND trunc(ma_date) <> ( select max(trunc(R.ma_date))
FROM ma_table R
GROUP BY TO_CHAR(R.ma_date,'yyyy')
);

Le probleme c'est que le select me sort toutes les dates maximale pour chaque année et non pas celle de l'année sur laquelle je veux faire le control avant de apsser à l'autre

Merci pour votre aide potentielle

3 réponses

Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 1 384
26 août 2009 à 11:24
Bonjour,

Peux-être le code suivant devrait faire ce que tu veux
DELETE FROM ma_table
WHERE trunc(ma_date) < add_months(TRUNC(sysdate),-48)
AND trunc(ma_date) <> ( select max(trunc(R.ma_date))
FROM ma_table R
WHERE TO_CHAR(ma_date,'yyyy') = TO_CHAR(R.ma_date,'yyyy'))

J'ai pas testé, à toi de voir.
A plus
0
En fait j'ai réussi a la faire avec des cursor loop :)

Merci beaucoup pour ta réponse quand meme !
0
kassabmo Messages postés 1 Date d'inscription lundi 19 juillet 2010 Statut Membre Dernière intervention 6 avril 2011
6 avril 2011 à 12:07
Bonjour,
j'ai un problem avec le boucle for.

mois je vais le moyen de i de 5 derniers jours de 18h jusqu'au 22h et je vais afficher les moyens qui sont superieurs de 30.

j'ai deja fait une solution avec les views, j'ai fait 16 views( 1 view pour chaque jour).
Chaque 3 view pour: s'assurer la date qui est bien entre 18h et 22h
calculer le moyen de i
afficher les moyens qui sont > 30.

est ce que je peux fiare une boucle for pour simplifier le code car dans chaque view je repete le code mais juste je change la date

Merci d'avance.
0