找出错误并改正: select * from ST_DAYEV_R a,(select stcd, min(tm) from ST_DAYEV_R where tm >= TO_DATE('2011-09-11 08:00:00', 'YYYY-MM-DD HH24:MI:SS') GROUP BY stcd) b, where a.stcd = b.stcd
时间: 2024-03-12 20:48:48 浏览: 63
错误并改正如下:
```
select a.*
from ST_DAYEV_R a,
(select stcd, min(tm)
from ST_DAYEV_R
where tm >= TO_DATE('2011-09-11 08:00:00', 'YYYY-MM-DD HH24:MI:SS')
group by stcd) b
where a.stcd = b.stcd and a.tm = b.min_tm
```
修改说明:
1. `min(tm)`应该改为`min_tm`,因为`min(tm)`是不合法的列名。
2. 在子查询中,需要将最小时间戳的`tm`列也返回,以便在外部查询中进行比对。
3. 在外部查询中,需要通过`a.tm = b.min_tm`来找到对应的最小时间戳。
4. 去掉了多余的逗号。
相关问题
一个oracle的表,表名为USER_WM.WM_PROJECT_R,该表有3个字段:STCD, TM, Z,分别为编码,时间和数值,时间是不规则的,如何将相同的STCD按照时间将Z相减?
你可以使用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对结果进行排序。
使用com.alibaba.fastjson.JSON将这个json数据转化,使其可以在java中去除对应值{"addvcd":"","areacd":"","stcd":"","rvcd":"","zdycd":"","zdqh_geojson":{}}
以下是使用com.alibaba.fastjson.JSON将json数据转化的示例代码:
```java
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
public class JsonTest {
public static void main(String[] args) {
String jsonStr = "{\"addvcd\":\"\",\"areacd\":\"\",\"stcd\":\"\",\"rvcd\":\"\",\"zdycd\":\"\",\"zdqh_geojson\":{}}";
JSONObject jsonObject = JSON.parseObject(jsonStr);
String addvcd = jsonObject.getString("addvcd");
String areacd = jsonObject.getString("areacd");
String stcd = jsonObject.getString("stcd");
String rvcd = jsonObject.getString("rvcd");
String zdycd = jsonObject.getString("zdycd");
JSONObject zdqh_geojson = jsonObject.getJSONObject("zdqh_geojson");
System.out.println(addvcd);
System.out.println(areacd);
System.out.println(stcd);
System.out.println(rvcd);
System.out.println(zdycd);
System.out.println(zdqh_geojson);
}
}
```
输出结果为:
```
{}
```
阅读全文