#mysql #sql
#mysql #sql
Вопрос:
В Mysql
Таблица
Id AA BBB
A 45 123
B 52 120
C 40 135
Как бы я получил
B_A 7
A_C 5
Сначала нужно было бы отсортировать по BBB Asc
затем минус 52-45.
B_A объединить B и A
Как вы добавляете / вычитаете из предыдущей строки в SQL?
Если бы мне нужно было иметь отдельные столбцы для B, а затем A, как бы я добавил это.
Комментарии:
1. Всегда ли столбец Id идеально непрерывен (т. Е. Нет пробелов от одной строки к следующей)?
2. Как вы получаете 5 для второй строки в вашем выводе?
Ответ №1:
SELECT concat(t1.id , '_', t2.id, ' ', t1.aa - t2.aa )
FROM table t1
INNER JOIN (SELECT Max(t2.id) prev_id,
t1.id
FROM table t1
INNER JOIN table t2
ON t1.id > t2.id
GROUP BY t1.id) prev
ON t1.id = prev.id
INNER JOIN table t2
ON t2.id = prev.prev_id
Комментарии:
1. существует больше, чем просто две строки. Черт, извините за добавление в q
2. @user428862 Я забыл предложение Group By, и я заставил Concat работать. Смотрите обновленный ответ
3. Существует более двух строк … 75-80. строки.
4. @user428862 количество строк не является проблемой. Меня смущает вторая строка в выходных данных
A_C 5
, поскольку B — это предыдущая строка, а не A