一个oracle的表,表名为USER_WM.WM_PROJECT_R,该表有3个字段:STCD, TM, Z,分别为编码,时间和数值,时间是不规则的,如何将相同的STCD按照时间将Z相减?
时间: 2023-10-06 19:05:12 浏览: 150
很简单的方法实现时间相加、减
你可以使用Oracle中的LAG函数来实现相邻行的数值相减。具体实现方式如下:
```
SELECT STCD, TM, Z,
Z - LAG(Z) OVER (PARTITION BY STCD ORDER BY TM) AS Z_DIFF
FROM USER_WM.WM_PROJECT_R
ORDER BY STCD, TM;
```
这里使用了LAG函数来获取前一行的Z值,然后再将当前行的Z值减去前一行的Z值,从而得到Z的差值,即Z_DIFF。同时使用PARTITION BY子句将数据按照STCD进行分组,以便在每个STCD内部进行数值的相减操作。最后,使用ORDER BY子句按照STCD和TM对结果进行排序。
阅读全文