Oracle查询当月数据,若存在返回当月数据,若不存在则查询上个月数据
时间: 2024-02-19 15:04:05 浏览: 119
Oracle数据查询
要实现当月数据存在则返回当月数据,当月数据不存在则返回上个月数据的查询,可以使用以下SQL语句:
```sql
SELECT *
FROM your_table
WHERE date_column >= TRUNC(SYSDATE, 'MONTH')
AND date_column < ADD_MONTHS(TRUNC(SYSDATE, 'MONTH'), 1)
UNION ALL
SELECT *
FROM your_table
WHERE date_column >= ADD_MONTHS(TRUNC(SYSDATE, 'MONTH'), -1)
AND date_column < TRUNC(SYSDATE, 'MONTH')
AND NOT EXISTS (
SELECT 1
FROM your_table
WHERE date_column >= TRUNC(SYSDATE, 'MONTH')
AND date_column < ADD_MONTHS(TRUNC(SYSDATE, 'MONTH'), 1)
);
```
以上SQL语句使用 `UNION ALL` 连接两个查询,第一个查询返回当月数据,第二个查询返回上个月数据。第二个查询中加入了一个 `NOT EXISTS` 子句,它会判断当前月份是否有数据,如果有数据,则第二个查询不会返回任何数据,否则会返回上个月的数据。
阅读全文