mysql - вычитать значения между строками, где значения столбцов соответствуют - PullRequest
0 голосов
/ 06 марта 2019

У меня есть таблица типа:

Number  |  Event  |  Weight
1            4          150
1            4          160
2            5          200
2            4          200
3            6          190
3            6          195

Для каждой строки я бы хотел вычесть из ее Weight, Weight другой строки, где Number и Event соответствует (если существует).Желаемый результат:

Number  |  Event  |  Weight  | DIFF
1            4          150    -10
1            4          160     10
2            5          200    NULL
2            4          200    NULL
3            6          190     -5
3            6          195      5

Возможна ли такая операция?Не уверен, если это уместно, в конце концов мне нужно будет превратить этот запрос в view.Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 06 марта 2019

Вам нужно присоединиться слева:

select 
  t.*,
  t.weight - tt.weight diff
from tablename t left join tablename tt
on tt.number = t.number and tt.event = t.event and tt.weight <> t.weight
1 голос
/ 06 марта 2019

Это можно сделать, просто вычтя столбец в объединенной таблице. Когда один из операндов равен нулю, результат арифметической операции равен нулю:

select a.Number, a.Event, a.Weight, a.Weight - b.Weight as DIFF
from a
left join b on a.Number = b.Number and a.Event = b.Event
...