【发布时间】:2009-11-04 00:32:52
【问题描述】:
我正在编写一个存储过程,我需要根据所报告的数据填充一个表。
在这种情况下,我将每天为某个日期范围内的某个代码提取三个值。
假设在这个存储过程的某个运行中,我有一个日期范围的代码值 X、Y 和 Z:
select abc.code,
abc.date,
abc.val_1,
abc.val_2,
abc.val_3
from data.abc
where abc.date BETWEEN '01-OCT-2009' AND '31-OCT-2009'
因此,对于日期范围内的每一天,我都有代码 x、y 和 z 的三个记录。
在我的最终表格中,我需要将其从行转换为列。通常我会使用解码功能,但这里我想根据返回的数据动态创建最终表格。
在这种情况下,我将在该范围内的每一天都有一条记录,并且还有 9 列(val_1_X、val_2_x、val_3_x、val_1_y 等等)。
我想动态设置它,这样当引入新的“代码”时我不需要重新打开我的存储过程,这样在报告的每个实例上,只返回“代码”该报告实例包含在决赛桌中。
这可以通过动态sql实现吗?我使用的是 Oracle 版本 10g。
【问题讨论】:
-
我建议让报告工具做任何交叉表/立方体/数据透视,只担心查询返回正确的数据来支持它。
标签: sql oracle plsql oracle10g dynamic-sql