Pour les pros du SQL (rien a voir avec hm)

Salut à tous,

Je merdouille un peu sur un truc au taff, je sais pas si y’en a qui gère le sql.

Voila je vous met un exemple en image

sql.PNG

Le but est de récupérer les lignes tel l’écart entre 4 dates soit de maximum 30 jours.

Dans l’exemple je voudrais juste récupérer les lignes 3-4-5-6-7 car l’écart entre 6 et 3 et entre 7 et 4 est inférieur à 30 jours.

Le souci c’est que autant en vba ou c++ ça me parait pas dur autant en sql je merde.

Si y’a des idées je prends.

Merci
++

:colere1:

Si c’est du SQL Oracle, tu peux utiliser les fonctions analytiques LAG/LEAD pour connaître la valeur du dessous ou dessus, et la comparer :slight_smile:

Si c’est une autre techno, il doit y avoir un équivalent et peut-être les mêmes mots clés…

plop

il faudrait déjà que tu nous file les noms des champs (colonnes quoi) pour formaliser le code :

sinon ça donnera un truc comme

select * from x where ($date1+30)>$date2

ou un peu plus smart

SELECT quelquechose FROM nom_de_table
WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;

ça se sont les fonctions de bases on va dire, maintenant il faut que tu compares les écartes pour chaque entrée dans ta table.

avec plus d’infos sur les champs, le formalisme de la table et la techno (mysql/postgre ou sql_server et enfin oracle on pourrait peut être plus t’aider.

file du détail quoi ^^

edit : et fais pas ton feignant hein, google est ton ami quoi mer** :wink:

°+°

[quote=“Yeepaa, post:659142”][/quote]

ouai requête pas simple mais faut des précisions comme dit yeepa. Selon le serveur qui va interpréter la requête tu as des fonctions qui te simplifient la vie aussi.
Apres je te promets pas que j’arrivais à la pondre car c’est vieux pour moi mais je vais jeter un oeuil :wink:

C’est oracle.

Le souci est de pouvoir comparer dans un même champ 2 données de 2 lignes différentes.

Donc c’est bien ça, voici un exemple : Les fonctions analytiques

Bah voila si oracle prend bien cette fonction la c’est cool je vais faire comme ça super . Merci

colonne : individu, date

select b1.individu, b1.date from base as b1, base as b2
where day(b1.date) - day(b2.date) < 30 jour AND b1.date > b2.date

A peu près un truc de ce genre.

il faut faire une requête qui fait référence à la même table 2 fois avec des alias (b1 et b2)
et faire une auto-jointure avec une inégalité (b1.date > b2.date).

Enfin si j’ai bien compris la demande et sauf erreur de ma part.