使用Oracle APEX 5.0中“选择列表”页面项中的静态值筛选SQL查询结果

时间:2015-10-06 05:40:49

标签: oracle-apex oracle-apex-5

我正在寻找一种使用“选择列表”页面项中的静态值来过滤和显示记录的方法。我使用以下查询在APEX 5.0中创建了一个条形图:

  select to_char(to_date(time_stamp,'YYYY-MM-DD-HH24:MI:SS'),'YYYY-MM-DD-HH24:MI:SS') as label, col2 as value from table1 where :P5_NEW_1 = col1 ;

table1的time_stamp列在我的数据库中的数据类型为varchar2,并包含YYYY-MM-DD-HH24:MI:SS

格式的日期值 例如,下面的值存储在time_stamp

2015-08-26-10:17:15
2015-08-26-13:17:15
2015-09-17-12:45:54
2015-09-17-14:12:32
2015-10-06-10:01:42
2015-10-06-11:01:28
2015-10-06-05:01:28

依旧......

我在表单上添加了一个名为“interval”的“选择列表”项,其中包含预先填充的值列表,例如1hr6hrs

现在我想修改上面的查询,以便发生以下情况:

  • 对于从下拉列表中选择的1hr的值,查询应检查time_stamp列并显示最近一小时的记录

    (即,落在to_char(sysdate - 1/24 ,'YYYY-MM-DD-HH24:MI:SS') to to_char(sysdate ,'YYYY-MM-DD-HH24:MI:SS'范围内的记录

  • 对于从下拉列表中选择的6hrs的值,查询应显示过去6小时的记录。

    (即,落在范围to_char(sysdate - 6/24 ,'YYYY-MM-DD-HH24:MI:SS' to to_char(sysdate ,'YYYY-MM-DD-HH24:MI:SS'内的记录))

如何使用页面项目选择列表中的静态值修改我的SQL查询以在当前SQL查询中添加上述条件?

1 个答案:

答案 0 :(得分:1)

您好,您可以试试这个:

SELECT to_char(to_date(time_stamp,'YYYY-MM-DD-HH24:MI:SS'),'YYYY-MM-DD-HH24:MI:SS') AS label, col2 AS VALUE
FROM table1 
WHERE :P5_NEW_1 = col1 AND
to_date(time_stamp,'yyyy-mm-dd hh24:mi:ss') BETWEEN
       (SYSDATE - (to_number(:SELECT_LIST_ID,'99')/24)) AND SYSDATE;
  

确保静态值的返回值等于 hr 本身

例如,如果静态值等于1HR,则返回值应为1

  

:SELECT_LIST_ID是选择列表ID,它包含间隔的静态值。

希望这有帮助。