NVL(BAL_ORI, LAG(BAL_ORI IGNORE NULLS) OVER(ORDER BY 1)) BAL_ORI, NVL(BAL_LOC, LAG(BAL_LOC IGNORE NULLS) OVER(ORDER BY 1)) BAL_LOC如何转换MySQL语句
时间: 2023-09-17 11:10:05 浏览: 126
在MySQL中,你可以使用子查询和窗口函数来模拟LAG函数和IGNORE NULLS选项的行为。以下是将NVL、LAG和IGNORE NULLS转换为MySQL的示例:
```sql
SELECT IFNULL(BAL_ORI,
(SELECT BAL_ORI FROM your_table t2
WHERE t2.BAL_ORI IS NOT NULL AND t2.BAL_ORI < t1.BAL_ORI
ORDER BY 1 DESC LIMIT 1)
) AS BAL_ORI,
IFNULL(BAL_LOC,
(SELECT BAL_LOC FROM your_table t2
WHERE t2.BAL_LOC IS NOT NULL AND t2.BAL_LOC < t1.BAL_LOC
ORDER BY 1 DESC LIMIT 1)
) AS BAL_LOC
FROM your_table t1;
```
在上述查询中,我们使用子查询来获取前一个非空值。子查询从同一表中选择符合条件的最大值,即小于当前行值的最大值。然后,我们使用IFNULL函数来检查列的值是否为NULL,并根据需要返回前一个非空值或默认值。
请注意,上述示例中的"your_table"应替换为您实际使用的表名。同时,这里假设你的表中有一个列用于排序,你可以根据实际情况调整ORDER BY子句和LIMIT子句来适应你的需求。
阅读全文