如果日期不存在,则Apex中的SQL查询返回上一个日期的值

时间:2016-04-26 06:43:16

标签: sql oracle oracle-apex

我需要通过比较2个表在Oracle Apex中生成交互式报告。每个表都有列:日期,标签,数字。

表1:包含Column更改的历史记录:Number和写入日期列:Number已更改。

表2:还有列:数字和列:日期(列:显示列的不同值的日期:月份的不同日期的数字)。

在比较列时生成报告" Tag_id"表1和表2之间 所以我们知道列中的哪个值:表1中的数字是指列:表2中的数字。(... where table1.tag = table2.tag)。

表2包含列中的日期:每月的每一天的数字, 表1包含按列更改的日期:每1,2,3天或更多天一次。

我希望报告显示列中的值:表1中的数字,并显示列中的值:表2中的数字,同时按表格对表1和表2进行比较:日期。

问题是在表1中列中没有日期:日期等于列中的日期:表2中的日期,数据库不知道列的哪个值:生成的报告中要返回的数字。

我想要实现的目标: 列中没有日期匹配:表1和表2之间的日期我想在Apex的Generated报告中返回列中的值:表2中的数字为 没有匹配的日期*和列的值:表1中的数字表示最近的前一个日期,仅使用SQL查询。

tables

1 个答案:

答案 0 :(得分:0)

有趣的问题。我不了解Apex,但如果它是Oracle的MySQL,我会一路走来:

SELECT 
   t2.id, 
   t2.date,
   CASE WHEN t1.date IS NULL 
      THEN (SELECT table1.number FROM table1 WHERE table1.data <= t2.data ORDER BY table1.data DESC LIMIT 1) 
      ELSE t1.number 
   END AS numberT1,
   t2.number as numberT2
FROM table2 t2
LEFT JOIN table1 t1 ON t1.date = t2.date