我有一张带有grp列的表。
grp
100
200
300
400
我想添加像grp_1和grp_2
这样的列 grp grp_1 grp_2
100 grp * 0 + 100 grp * 0 + 100
200 grp * previous grp_1 + 10 grp * previous grp_2 + 10
300 grp * previous grp_1 + 10 grp * previous grp_2 + 10
400 grp * previous grp_1 + 10 grp * previous grp_2 + 10
我怎样才能实现这个
这就是我所做的,我怎样才能找到以前的grp
create table addstock_FINAL
select GRP ,
grp * previous grp_1 + 10 as grp_1,
grp * previous grp_2 + 10 as grp_2
FROM ADDSTOCK;
提前致谢
答案 0 :(得分:0)
您将使用变量:
select a.*,
(@grp1 := @grp1 + grp + 10) as grp1,
(@grp2 := @grp2 * grp + 10) as grp2
from AddStock a cross join
(select @grp1 := 0, @grp2 := 1) v;
我建议包括一个订单,以确保按所需顺序进行计算。您需要在实际数据中选择适当的字段。
注意:如果grp
列包含NULL
值,则后续值将为NULL
。