【发布时间】:2016-11-30 15:14:56
【问题描述】:
我有以下简单的表格,大约。 40k 项:
|date|consum|
根据这张表,我想计算一些新的列。最后,表格应如下所示:
|date|consum|row|row_relativ|min|max|upper|lower|
很遗憾 SAP Hana 数据库不支持递归表语句...
计算规则如下:
- 行 =
row_number() over(order by dates) - row_relative =
row*35040/32768 - 分钟 =
floor(row_relative) - 最大值 =
ceil(row_relative) - min = 从具有最小值的行中选择消耗
- max = 从具有最大值的行中选择消耗
目前我有一个包含 5 个变量的存储程序。在每个变量中,我计算 i 新列。它非常非常脏......我怎样才能让它与众不同?我不能使用递归函数...:/
这是我的 sql sn-p...玩得开心 =)
var1 = select *, row_number() over(order by dates) as row from XYZ order by dates limit 34944;
var2 = select *, (row * 34944/32768) as row_relative from :var1;
var3 = select *, floor(row_relative) as min, ceil(row_relative) as max from :var2;
var4 = select
p.*,
(select consumfrom :var3 where row = p.min) as lower,
(select consumfrom :var3 where row = p.max) as upper
from :var3 p;
var5 = select
p.*,
(p.lower* (1-p.row_relative+p.min)+p.upper * (p.row_relativ - p.min)) as new_consum
from :var4 p;
【问题讨论】: