我正在寻找一种使用“选择列表”页面项中的静态值来过滤和显示记录的方法。我使用以下查询在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”的“选择列表”项,其中包含预先填充的值列表,例如1hr
,6hrs
。
现在我想修改上面的查询,以便发生以下情况:
对于从下拉列表中选择的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查询中添加上述条件?
答案 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,它包含间隔的静态值。
希望这有帮助。