Soustraction entre deux valeurs

mikesunshine59 Messages postés 75 Statut Membre -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai une table avec les informations ci-dessous :

Date, ID, Price
07/02/2018, ORANGE, 54
08/02/2018, ORANGE, 53
09/02/2018, ORANGE, 55

07/02/2018, POMME, 65
08/02/2018, POMME, 45
09/02/2018, POMME, 67

07/02/2018, ANANAS, 54
08/02/2018, ANANAS, 56
09/02/2018, ANANAS, 51

Je voudrais obtenir le résultat ci-dessous :

Date, ID, Price, Différence
07/02/2018, ORANGE, 54, 54 (Différence avec la valeur J-1)
08/02/2018, ORANGE, 53, -1 (Différence avec la valeur J-1)
09/02/2018, ORANGE, 55, 2 (Différence avec la valeur J-1)

07/02/2018, POMME, 65,65 (Différence avec la valeur J-1)
08/02/2018, POMME, 45, -20 (Différence avec la valeur J-1)
09/02/2018, POMME, 67,22 (Différence avec la valeur J-1)

07/02/2018, ANANAS, 54,54 (Différence avec la valeur J-1)
08/02/2018, ANANAS, 56,2 (Différence avec la valeur J-1)
09/02/2018, ANANAS, 51,-5 (Différence avec la valeur J-1)

Pouvez-vous m'aider svp ?

1 réponse

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonsoir, peut-être à peu près:
    select  t1.Date, t1.ID, t1.Price, t1.Price-t2.Price as diff
    from tatable as t1, tatable as t2
    where t1.ID=t2.ID and t1.Date = t2.Date+1

     
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      ou bien:
      select  t1.Date, t1.ID, t1.Price, t1.Price-ifnull(t2.Price, 0) as diff
      from tatable as t1 left join tatable as t2
      on t1.ID=t2.ID and t1.Date = t2.Date+1
      0
    2. mikesunshine59 Messages postés 75 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Merci :)

      Cela me donne 0 résultat
      0
    3. mikesunshine59 Messages postés 75 Statut Membre
       
      Merci :)

      Cela me donne des résultats mais les soustractions me donnent un résultat faux.

      En fait les dates sont dans ce format :
      2018-02-07 21:40:05
      2018-02-07 21:45:11
      2018-02-07 21:50:06

      C'est sympa de m'aider à apprendre et comprendre.
      0
    4. mikesunshine59 Messages postés 75 Statut Membre
       
      J'ai essayé ca mais ca ne fonctionne pas comme je veux. Même s'il y a de l'idée.


      SELECT t1.Date, t1.ID, t1.Price, t1.Price- t2.Price
      FROM matable as t1, matable as t2
      GROUP BY ID
      ORDER BY ID
      0
    5. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > mikesunshine59 Messages postés 75 Statut Membre
       
      select  t1.Date, t1.ID, t1.Price, t1.Price-ifnull(t2.Price, 0) as diff, t2.Date
      from tatable as t1 left join tatable as t2
      on t1.ID=t2.ID and datediff(t1.Date,2.Date)=1
      order by ID, t1.Date

      n'hésite pas à expliciter "les soustractions me donnent un résultat faux".
      0