题目:假如输入变量是cur_date varchar2
统计以下变量:
今天的产量 cur_date
昨天的产量 to_char(to_date(cur_date,'yyyymmdd')-1,'yyyymmdd')
本月的产量 substr(cur_date,1,6)
本年的产量 substr(cur_date,1,4)
去年同期的产量 to_char(add_months(to_date(cur_date,'yyyymmdd'),-12),'yyyymmdd')
1)用基本SQL来实现
用FOR循环游标来实现
考核的知识点:FOR循环,游标,时间值函数,转换函数,DECODE/CASE用法
这个题还需各位高手。
参考答案如下:
select *
from factory
select to_char(to_date('20080602','yyyymmdd') -1,'yyyymmdd')
from dual
select to_char(add_months(to_date(f.cur_date,'yyyymmdd'),-12),'yyyymmdd')
from dual
create table temp
as
select cur_date,(select
sum(case when cur_date=f.cur_date then cur_perout
else 0
end)
from factory) a,
(select
sum(case when cur_date=to_char(to_date(f.cur_date,'yyyymmdd') -1,'yyyymmdd')
then cur_perout else 0
end)
from factory) b ,
(select
sum(case when substr(cur_date,1,6)=substr(f.cur_date,1,6) then cur_perout
else 0
end)
from factory) c,
(select
sum(case when substr(cur_date,1,4)=substr(f.cur_date,1,4) then cur_perout
else 0
end)
from factory) d,
(select
sum(case when cur_date=to_char(add_months(to_date(f.cur_date,'yyyymmdd'),-12),'yyyymmdd')
then cur_perout else 0
end)
from factory) e
from factory f
where rownum <1
-- where cur_date='20080602';
begin
for temstr in (select * from factory) loop
insert into temp
select temstr.cur_date,--游标(不带字段/常量)
sum(case when cur_date=temstr.cur_date then cur_perout
else 0
end),
sum(case when cur_date=to_char(to_date(temstr.cur_date,'yyyymmdd') -1,'yyyymmdd')
then cur_perout
else 0
end),
sum(case when substr(cur_date,1,6)=substr(temstr.cur_date,1,6) then cur_perout
else 0
end),
sum(case when substr(cur_date,1,4)=substr(temstr.cur_date,1,4) then cur_perout
else 0
end),
sum(case when cur_date=to_char(add_months(to_date(temstr.cur_date,'yyyymmdd'),-12),'yyyymmdd') then cur_perout
else 0
end)
from factory;
end loop;
end;
select * from temp
分享到:
相关推荐
Oracle存储过程、游标、函数的详解
该文件讲解了Oracle数据库中函数游标的创建以及包的定义,对数据库有更深层次的了解
这些例子是我自己也是在学习的时候写的。。希望与同水平的人有用。
同步每个人的时长的oracle proc,游标的使用,函数的使用同步每个人的时长的oracle proc,游标的使用,函数的使用同步每个人的时长的oracle proc,游标的使用,函数的使用
多维度查询时通常需要建立多个游标循环,查询效率无法得到保障,现在通过游标和substr()函数相结合的方式提高查询效率
oracle 管道函数 动态游标,自定义类型,转table
Oracle中的游标和函数详解 1.游标 游标是一种 PL/SQL 控制结构;可以对 SQL 语句的处理进行显示控制,便于对表的行数据 逐条进行处理。 游标并不是一个数据库对象,只是存留在内存中。 操作步骤: 声明游标 ...
oracle 的函数、存储过程、游标、简单实例 oracle常用语句oracle 的函数、存储过程、游标、简单实例 oracle常用语句
学习 游标 视图 自定义函数不二选择,我觉得看完之后学到东西了
Oracle函数返回游标的方法及应用.pdf
根据所示 代码 可以实现返回记录集类型的函数
包含oracle存储过程的增、删、查、改 %type、%rowtype的使用 自定义函数 PL/SQL块
利用游标返回结果集的的例子(Oracle 存储过程).doc 利用游标返回结果集的的例子(Oracle 存储过程).doc 利用游标返回结果集的的例子(Oracle 存储过程).doc
oracle数据库游标实验报告!oracle数据库游标实验报告!oracle数据库游标实验报告!
入参是字符串格式的xml,目的是解析xml节点值,作为数据库检索where条件,检索出数据库记录,利用四个游标返回四个数据集,然后用groovy脚本将四个游标数据集解析成json出参中对应的四个节点值。出参json有两层结构...
NULL 博文链接:https://zxf-noimp.iteye.com/blog/830163
个人苦心整理,希望可以和大家一起研究学习。
oracle游标和异常处理、函数、存储过程和包的说明 并带有实际操作的语句
oracle知识点笔记,语法,触发器,存储过程,存储函数,流程控制,游标,异常处理,记录类型,视图,控制用户权限,高级子查询,set运算符,基本的sql_Select语句等等