sql >> Database teknologi >  >> RDS >> Mysql

Træk to rækkers værdier fra i samme kolonne ved hjælp af Mysql-gruppe efter ID

Dine datoer er forkerte. Når du bestiller efter denne kolonne, bestiller du efter dag først. Korrekt bestilling er år-måned-dag. Brug den korrekte datatype, datetime eller timestamp. For at gøre dette kan du gøre følgende:

alter table table1 add column d datetime;
update table1 set d = str_to_date(`Date`, '%d-%m-%Y %H:%i');
alter table table1 drop column `Date`;

Forespørgslen for at få dit ønskede resultat er derefter:

SELECT ID, d, Value,
       IF(@ID=ID, Value - @prevV, 'N/A') AS diff,
       @row_number:=CASE WHEN @ID=ID THEN @row_number+1 ELSE 1 END AS row_number,

       @prevV := Value,
       @ID:=ID AS ID
FROM table1
, (SELECT @row_number:=0, @ID:='', @prevV := NULL) AS t 
ORDER BY id, d;

Alt du skal gøre er at tilføje en anden variabel for at holde værdien af ​​den forrige række.




  1. CV for XID hævet 0:ukendt

  2. Få returværdi fra lagret procedure i C#

  3. Hvordan fungerer MySQL CASE?

  4. Hvornår skal du skifte til en større RDS-instans