INSERT INTO checklist.JOB_ERROR_LOG (ID, DOC_NUMBER, ERROR_MSG, HANDLE, CREATE_DATE) (SELECT MAX(id) + 1, '20230626003' FROM checklist.JOB_ERROR_LOG), '测试插入语句', 'N', sysdate ;修改
时间: 2024-04-20 20:25:45 浏览: 94
修改后的插入语句如下:
INSERT INTO checklist.JOB_ERROR_LOG (ID, DOC_NUMBER, ERROR_MSG, HANDLE, CREATE_DATE)
SELECT MAX(id) + 1, '20230626003', '测试插入语句', 'N', sysdate
FROM checklist.JOB_ERROR_LOG;
相关问题
INSERT INTO checklist.JOB_ERROR_LOG (ID, DOC_NUMBER, ERROR_MSG, HANDLE, CREATE_DATE) VALUES (SELECT MAX(id) + 1 FROM checklist.JOB_ERROR_LOG, '20230626003', '测试插入语句', 'N', sysdate)这个报出的ORA-00936: missing expression
这个错误是由于在插入语句中的子查询中缺少表达式导致的。请确保子查询中的选择列表中包含所需的表达式,并且每个表达式都有适当的别名。
以下是修正后的插入语句:
INSERT INTO checklist.JOB_ERROR_LOG (ID, DOC_NUMBER, ERROR_MSG, HANDLE, CREATE_DATE)
SELECT MAX(id) + 1, '20230626003', '测试插入语句', 'N', sysdate
FROM checklist.JOB_ERROR_LOG;
select MAX (handover.LF_TYPE) KEEP ( dense_rank first order by handover.CAR_ENTITY_ID desc ) as TYRE_TYPE, MAX (handover.HANDOVER_DATE_TIME) KEEP ( dense_rank first order by handover.CAR_ENTITY_ID desc ) as HANDOVER_DATE_TIME, aceHandover.CAR_INFO_ID from HANDOVER_CHECKLIST handover改为postgresql格式
在 PostgreSQL 中,可以使用子查询和窗口函数来模拟 Oracle 中的 `KEEP` 函数。具体实现如下:
```sql
SELECT DISTINCT ON (aceHandover.CAR_INFO_ID)
MAX(handover.LF_TYPE) OVER (PARTITION BY aceHandover.CAR_INFO_ID ORDER BY handover.CAR_ENTITY_ID DESC) AS TYRE_TYPE,
MAX(handover.HANDOVER_DATE_TIME) OVER (PARTITION BY aceHandover.CAR_INFO_ID ORDER BY handover.CAR_ENTITY_ID DESC) AS HANDOVER_DATE_TIME,
aceHandover.CAR_INFO_ID
FROM ace_handover_checklist aceHandover
JOIN handover_checklist handover ON aceHandover.HANDOVER_CHECKLIST_ID = handover.HANDOVER_CHECKLIST_ID
ORDER BY aceHandover.CAR_INFO_ID, handover.CAR_ENTITY_ID DESC;
```
在上面的查询中,首先使用 `JOIN` 子句将 `ace_handover_checklist` 和 `handover_checklist` 表连接起来。然后,使用 `DISTINCT ON` 子句指定按照 `aceHandover.CAR_INFO_ID` 分组并保留每组的第一行。对于每个分组,使用 `MAX` 窗口函数和 `OVER` 子句来获取 `handover.LF_TYPE` 和 `handover.HANDOVER_DATE_TIME` 列的最大值,并根据 `handover.CAR_ENTITY_ID` 列进行降序排序,从而保留每个分组的第一个值。
最后,使用 `ORDER BY` 子句对结果进行排序,确保按照 `aceHandover.CAR_INFO_ID` 和 `handover.CAR_ENTITY_ID` 进行升序和降序排序。
阅读全文