Как вы добавляете / вычитаете из предыдущей строки в SQL?

#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