sql - 如何根据 Oracle 中用户的输入创建动态视图?
问题描述
例如,我必须为特定员工创建一个视图,该视图存储过去 50 天的出勤信息,而我有超过一百万的员工。
我将提供员工 ID 作为输入,并且我希望仅为该员工创建此视图,其中包含他最近 50 天的出勤详细信息。
一个简单的解释将不胜感激。
谢谢你。
解决方案
视图只是一个存储的查询。因此,如果您总是只需要最后 50 天,那么
create or replace view v_50 as
select empno, ename, date_in, date_out
from attendance
where date_in >= trunc(sysdate) - 50
然后为您需要的任何员工获取数据:
select *
from v_50
where empno = 1234;
另一方面,您根本不需要视图 - 从原始表中执行相同操作:
select empno, ename, date_in, date_out
from attendance
where empno = 1234
and date_in >= trunc(sysdate) - 50
确保两者empno
都date_in
被索引,定期收集统计数据。
要检索特定月份的数据,一种选择是
select ...
from attendance
where to_char(date_in, 'yyyymm') = '202009'
基于函数的索引会有所帮助;否则,你必须使用类似的东西
where date_in between date '2020-09-01' and date '2020-03-30'
ifdate_in
被索引,因为to_char
-ing 它不能使用这样的索引。
推荐阅读
- javascript - 从同一个表单发送电子邮件和插入
- c++ - 计算器应用程序,制作 Cosinus 函数
- javascript - 如何将日期格式转换为首选格式?
- selenium - Selenium python Gecko 不在路径中 [已解决]
- python - 雅虎邮件错误550,b'请求失败;信箱不可用'
- google-apps-script - 有值时,Google 表格脚本 GetValue/GetDisplayValue 返回 #N/A
- celery - 气流 dag - 任务立即进入 'up_for_retry' 状态('start_date' 是 1 天前)
- javascript - 在表中动态添加行 - Bootstrap & JS
- javascript - 如何从 url 隐藏 id?
- javascript - 如何使输入元素只读取决于两个变量的值