mysql вычитать строку за строкой

У меня два представления mysql (5.6). Одно представление содержит только одно значение в одной строке столбца on. Скажем, столбец А, и в этой единственной строке у меня есть значение 5000.

У меня есть второе представление с 3 столбцами: элемент (varchar), дата (очевидно, содержит даты) и значение (десятичное). Этот второй вид имеет 4 строки, поэтому он выглядит так:

item                date             value

'lectii de pian',  '2015-11-09',     '101.88'
'Microsoft office','2015-11-11',     '7.00'
'Belasting',       '2015-11-15',     '524.00'
'Netflix',         '2015-11-18',     '8.99'

Что я хочу сделать, это создать в этом представлении еще один столбец, назовем его "B" и вычесть первое значение в значении столбца из значения в представлении A, а затем из результата вычесть следующее значение и так далее, чтобы он выглядел как этот

 item                date             value       B

'lectii de pian',  '2015-11-09',     '101.88'    '4898.12'
'Microsoft office','2015-11-11',     '7.00'      '4891.12'
'Belasting',       '2015-11-15',     '524.00'    '4367.12'
'Netflix',         '2015-11-18',     '8.99'      '4358.13'

Любые идеи Как я мог бы добиться этого в MySQL 5.6?

Большое спасибо!

2 ответа

Использовать @variable провести текущее вычитание, инициализируя его из представления А.

SELECT b.item, b.date, b.value, @running := @running - value AS b
FROM view2 AS b
CROSS JOIN (SELECT @running := a FROM view1) AS a
ORDER BY b.date

DEMO

Пример данных:

CREATE TABLE t1
    (`item` varchar(50), `date` date, `value` decimal(6,2))
;

INSERT INTO t1
    (`item`, `date`, `value`)
VALUES
    ('lectii de pian,', '2015-11-09,', 101.88),
    ('Microsoft office', '2015-11-11,', 7.00),
    ('Belasting,', '2015-11-15,', 524.00),
    ('Netflix,', '2015-11-18,', 8.99)
;


CREATE TABLE t2
    (`a` int)
;

INSERT INTO t2
    (`a`)
VALUES
    (5000)
;

Запрос:

SELECT
t1.*,
@v := @v - `value` AS B
FROM
t1
, (SELECT @v := (SELECT MAX(a) FROM t2)) var_init_subquery
ORDER BY `date`

Результат:

|             item |                       date |  value |       B |
|------------------|----------------------------|--------|---------|
|  lectii de pian, | November, 09 2015 00:00:00 | 101.88 | 4898.12 |
| Microsoft office | November, 11 2015 00:00:00 |      7 | 4891.12 |
|       Belasting, | November, 15 2015 00:00:00 |    524 | 4367.12 |
|         Netflix, | November, 18 2015 00:00:00 |   8.99 | 4358.13 |
Другие вопросы по тегам