Oracle SQL,如果当前月份的值还不可用,则从上个月获取这些值,并将其与上个月的值沿着返回

lsmepo6l  于 2023-04-29  发布在  Oracle
关注(0)|答案(1)|浏览(167)

我想生成一个报告的项目价格为所有前几个月和当前月份。但是,每月10号之后,系统才会显示当月的物品价格。因此,在记录可用之前,查询应该采用上个月的价格作为本月的价格。
例如,以下是项目价格表:

假设当前日期是5月3日,查询应返回以下内容:

如果查询在5月10日之后运行,并且当前月份的价格是5月的,则它应该返回它找到的内容:

6ljaweal

6ljaweal1#

假设您的DATE列是DATE数据类型,设置为每个月第一天的午夜,那么您可以用途:

SELECT item, "DATE", price
FROM   table_name
UNION ALL
SELECT item, TRUNC(SYSDATE, 'MM'), price
FROM   table_name
WHERE  "DATE" = ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -1)
AND    EXTRACT(DAY FROM SYSDATE) < 10;
  • 注意:DATE是一个保留字,你不应该使用它作为列标识符;如果你这样做,那么你将需要在引用它的任何地方使用带引号的标识符。*

相关问题