У меня есть таблица типа:
Number | Event | Weight
1 4 150
1 4 160
2 5 200
2 4 200
3 6 190
3 6 195
Для каждой строки я хотел бы вычесть из ее WeightWeight другой строки, где 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. Заранее спасибо.
Я забыл отметить, что в таблице будет только одно совпадение.






Это можно сделать, просто вычитая столбец в объединенной таблице. Когда один из операндов равен нулю, результат арифметической операции равен нулю:
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
Вам нужно левое соединение:
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
Что должно получиться, если таблица содержит 3 и более строк с одинаковыми комбинациями числа и события?