【发布时间】:2021-11-22 13:18:13
【问题描述】:
我的表(名称 EPM1):
| TIMESTAMP | INVERTER1POWER | INVERTER2POWER | POWERLIMIT |
|---|---|---|---|
| 2021-09-30T17:19:42.309Z | 100 | 400 | 0.8 |
| 2021-09-30T17:20:42.309Z | 200 | 500 | 0.6 |
| 2021-09-30T17:21:42.309Z | 300 | 600 | 0.7 |
我有一个这样的查询:
SELECT SUM(CASE WHEN (INVERTER1POWER+INVERTER2POWER) < (250000*POWERLIMIT) THEN INVERTER1POWER+INVERTER2POWER END) AS SUM1
FROM EPM1
WHERE TIMESTAMP >= TO_UTC_TIMESTAMP_TZ(:timefrom) AND TIMESTAMP <= TO_UTC_TIMESTAMP_TZ(:timeto)
这给了我输出:
| SUM1 |
|---|
| 2100 |
我希望有类似的单个值,但在计算中使用上一行的POWERLIMIT - 在这部分(250000*POWERLIMIT)。因此,对于第一次迭代,它将是 (100+400)*0,因为没有先前的值。然后是(200+500)*0.8,然后是(300+600)*0.6。
我尝试使用像 LAG(POWERLIMIT, 1, 0) 这样的 LAG 函数,但不能在 SUM 中使用它。
【问题讨论】:
标签: sql oracle lag analytic-functions