Comparer deux lignes
Franck
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je souhaite comprer deux lignes d'une base de données en utilisant une requête SQL.
Ma base :
ID----- Date--------Num_machine------Compteur
1-------01/01/18-----1------------------------45
2-------01/01/18-----2------------------------12
3-------02/01/18-----1------------------------52
4-------02/01/18-----2------------------------26
5-------03/01/18-----1------------------------56
Le compteur est incrémenté sur les machines.
Je voudrai obtenir :
ID----Date----------Num_machine-----Compteur-----ID1----Date1---------Num_machine1----Compteur1----Diff
1------01/01/18------1-------------------------45---------------3-------02/01/18----------1-----------------------52-----------------7
2------01/01/18------2-------------------------12---------------4-------02/01/18----------2-----------------------26------------------14
3------02/01/18------1-------------------------52---------------5--------03/01/18---------1-----------------------56------------------4
Je vous remercie par avance pour votre aide.
Je souhaite comprer deux lignes d'une base de données en utilisant une requête SQL.
Ma base :
ID----- Date--------Num_machine------Compteur
1-------01/01/18-----1------------------------45
2-------01/01/18-----2------------------------12
3-------02/01/18-----1------------------------52
4-------02/01/18-----2------------------------26
5-------03/01/18-----1------------------------56
Le compteur est incrémenté sur les machines.
Je voudrai obtenir :
ID----Date----------Num_machine-----Compteur-----ID1----Date1---------Num_machine1----Compteur1----Diff
1------01/01/18------1-------------------------45---------------3-------02/01/18----------1-----------------------52-----------------7
2------01/01/18------2-------------------------12---------------4-------02/01/18----------2-----------------------26------------------14
3------02/01/18------1-------------------------52---------------5--------03/01/18---------1-----------------------56------------------4
Je vous remercie par avance pour votre aide.
A voir également:
- Comparer deux enregistrements sql
- Deux ecran pc - Guide
- Comment faire deux colonnes sur word - Guide
- Nombre de jours entre deux dates excel - Guide
- Deux whatsapp sur un téléphone - Guide
- Connecter deux airpods mac - Guide
1 réponse
Bonjour,
Tu parles de requête SQL .. mais tu postes dans le forum WINDEV.....
Ta question concerne t'elle du code windev... ou une requête (le langage...) SQL ?
Si SQL ... avec quel SGBD ? Mysql ? Oracle ? SqlServer ? PostgreSql ? Sqlite ? access ? Autre ?
Et enfin, si je comprend bien (j'ai mis quelques minutes à comprendre ta question (surtout avec l'ID 3 qui se répétait deux fois à gauche et à droite...), tu veux calculer la différence entre la valeur du COMPTEUR à la date N avec celle en N-1 ?
Niveau requête ça pourrait ressembler à un truc du genre
Tu parles de requête SQL .. mais tu postes dans le forum WINDEV.....
Ta question concerne t'elle du code windev... ou une requête (le langage...) SQL ?
Si SQL ... avec quel SGBD ? Mysql ? Oracle ? SqlServer ? PostgreSql ? Sqlite ? access ? Autre ?
Et enfin, si je comprend bien (j'ai mis quelques minutes à comprendre ta question (surtout avec l'ID 3 qui se répétait deux fois à gauche et à droite...), tu veux calculer la différence entre la valeur du COMPTEUR à la date N avec celle en N-1 ?
Niveau requête ça pourrait ressembler à un truc du genre
SELECT tb0.num num , tb0.ID , tb0.`Date` as DATE , tb0.Num_machine , tb0.Compteur as CPT , tb_pre.ID as ID1 , tb_pre.`Date` as DATE1 , tb_pre.Num_machine1 , tb_pre.Compteur as CPT_PREC , tb0.Compteur - tb_pre.Compteur as DIF FROM ( SELECT @rownum := @rownum + 1 AS num, Date FROM (SELECT Date FROM TaTable order by Num_machine,`Date`) ) tb0 -- l'ensemble des enregistrements, tries et numerotes LEFT JOIN ( SELECT @rownum := @rownum + 1 AS num, Date FROM (SELECT Date FROM TaTable order by Num_machine,`Date`) ) tb_pre ON (tb_pre.num =(tb0.num-1) AND tb_pre.Num_machine = tb0.Num_machine) -- ON joint chaque resultat avec celui ayant le numero inferieur order by tb0.num;