{Oracle} requête avec boucle
amben
-
kassabmo Messages postés 1 Date d'inscription Statut Membre Dernière intervention -
kassabmo Messages postés 1 Date d'inscription Statut Membre Dernière intervention -
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
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
Bonjour,
Peux-être le code suivant devrait faire ce que tu veux
J'ai pas testé, à toi de voir.
A plus
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
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.
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.