update 更新数据时,数据结果为空

我想 update 09:31m 这根 bar, 让其等于 09:31 这根 bar 的值加上 09:30 这根 bar 的值,脚本如下:

update order_sum_all set b_sum = b_sum + prev(b_sum),  s_sum = s_sum + prev(s_sum), b_item_sum = b_item_sum + prev(b_item_sum), s_item_sum = prev(s_item_sum) where TimeStamp = 09:31m or TimeStamp = 13:01m context by WindCode;

attachments-2023-03-caUB0DRj641a746f1cb4a.png结果中 09:31m 这根 bar 的值全为空值,这是为什么?

请先 登录 后评论

1 个回答

Polly

此处是因为 where 语句先于 select 语句执行,所以筛选出的 9:31m 的数据只有一条,其 prev 为空值,计算后结果为空。详见 SQL 执行顺序的文档。

1.30.21 / 2.00.9 版本后支持使用 case when 语句,可参考下述脚本对 SQL 语句进行修改:

time = 09:00m + 1..60
b_sum = 1..60
t = table(time, b_sum)
update t set b_sum = (case when time == 09:31m then  b_sum + prev(b_sum) else b_sum end) 

若为旧版本,可以先计算出更新值,再进行更新。

请先 登录 后评论
  • 1 关注
  • 0 收藏,658 浏览
  • 提出于 2023-03-22 11:24