2014-11-28 2 views
5
+--------+---------+-------+--------+ 
| billID | orderId | price | date | 
+--------+---------+-------+--------+ 
|  1 |  1 | 100 | 1.3.12 | 
|  2 |  1 | 230 | 1.4.12 | 
|  3 |  1 | 300 | 1.5.12 | 
|  4 |  2 | 1000 | 1.3.12 | 
|  5 |  2 | 160 | 1.4.12 | 
|  6 |  3 | 400 | 1.3.12 | 
+--------+---------+-------+--------+ 

Я хочу создать представление, в котором есть столбец, в котором суммарная цена имеет тот же самый идентификатор orderID, но с датой раньше даты строк. Как это:Как выбрать столбец для общей суммы с более ранней даты

+--------+---------+-------+--------+--------------+ 
| billID | orderId | price | date | add-on price | 
+--------+---------+-------+--------+--------------+ 
|  |   |  |  |    | 
|  1 |  1 | 100 | 1.3.12 |   100 | 
|  2 |  1 | 230 | 1.4.12 |   330 | 
|  3 |  1 | 300 | 1.5.12 |   630 | 
|  4 |  2 | 1000 | 1.3.12 |   1000 | 
|  5 |  2 | 160 | 1.4.12 |   1160 | 
|  6 |  3 | 400 | 1.3.12 |   400 | 
+--------+---------+-------+--------+--------------+ 

ответ

2

Вы можете пользователь коррелированный подзапрос для этого:

select t.*, 
     (select sum(t2.price) 
     from table t2 
     where t2.orderId = t.orderId and t2.date <= t.date 
     ) as CumulativePrice 
from table t; 
Смежные вопросы