我一直在尝试检索一些每日生成的数据,但我无法弄清楚如何在FROM子句(Oracle db)中动态设置每日创建的表名。每天都会生成一个新表,其中日期戳作为表名的一部分。这将用于每日安排的报告中,该报告必须始终从当天的表中提取(即今天的表名=“STATDB01.A150417001_AINF”,其中“150417”是当前日期)。如何在不必每天更新查询的情况下从新的每日表中检索数据?
我可以在SELECT语句中动态创建新的表格,但我无法在FROM语句中使用它。
这是我的疑问:
SELECT
sta.statist “Stats”
,sta.indept “Department”
,sta.ondate “Date”
,sta.skitem “SKU”
--< I can get this to work in the SELECT clause >--
,'STATDB01.A'||TO_CHAR(SYSDATE, 'YYMMDD')||'001_AINF' “New Table”
FROM
--< Calling the table directly works fine >--
--STATDB01.A150417001_AINF sta
--< but this does not work in the FROM clause >--
'STATDB01.A'||TO_CHAR(SYSDATE, 'YYMMDD')||'001_AINF'
WHERE
sta.run_stat LIKE '%341%'
ORDER BY
sta.elap_time
;
答案 0 :(得分:1)
您可以在PL / sql中编写(某些部分)报表,将查询(包括当天的表名)构建到字符串变量中,然后使用{{3}运行查询字符串}。
或者,您可以编写一个shell脚本并让它输出带有当天表名的查询,然后将其(如果需要,然后将其提供到文件中)到sqlplus
。
修改:根据请求,EXECUTE IMMEDIATE
{{1}}正在投放。