create table Puma2 (tt int) ;select p1.id ,p2.tt
from test p1,Puma2 p2
where p2.tt <p1.max and p2.tt >p1.min再建一个表 专门存放那些值.
笨方法....
from test p1,Puma2 p2
where p2.tt <p1.max and p2.tt >p1.min再建一个表 专门存放那些值.
笨方法....
解决方案 »
- ORACLE 数据库备份的问题
- 求助!!!如何用第三方客户端远程访问unix系统下的oracle7数据库!!!
- oracle 数据保存的问题
- 简单触发器问题
- oracle 运行在windows系统下与linux下有什么区别吗?
- sql/plus中调用存储过程总失败?
- 创建回滚段成功,为什么查询不到?
- 使用Convert Mysql to Oracle 4.0,oracle报Cannot load oci.dll library
- 怎样能将oracle库中用select语句显示的内容生成一个新表,急!急!?
- TNS Listener错误,客户端连接太多,超过限制,如何解决呢?
- PRO*C的问题
- 几个简单问题
11:53:05 2 (id varchar2(10),
11:53:05 3 min number,
11:53:05 4 max number
11:53:05 5 );表已创建。已用时间: 00: 00: 00.91
11:53:05 jlanzpa817>
11:53:05 jlanzpa817>insert into test1 values('1001',3,6);
TABLE已创建 1 行。已用时间: 00: 00: 00.10
11:53:05 jlanzpa817>commit;提交完成。已用时间: 00: 00: 00.10
11:53:05 jlanzpa817>
11:53:05 jlanzpa817>select id,b.rm from test1 a,(select rownum rm from dba_objects where rownum < 10
00) b
11:53:05 2 where b.rm between a.min and a.max;ID RM
---------- ----------
1001 3
1001 4
1001 5
1001 6已用时间: 00: 00: 00.60
SQL> declare
2 cursor t_sor is
3 select * from student;
4 v_value number;
5 begin
6 dbms_output.put_line('id'||' '||'value');
7 for v_sor in t_sor loop
8 for i in 0..(v_sor.book-v_sor.sname) loop
9 --if v_sor.sname<v_sor.book then
10 v_value:=v_sor.sname+i;
11 dbms_output.put_line(v_sor.id||' '||v_value);
12 end loop;
13 end loop;
14 end;
15 /
id value
1001 3
1001 4
1001 5
1001 6PL/SQL procedure successfully completed
1001 3 6 <------有这条记录
select (select id from test),rownum + (select min from test) - 1
from all_objects,all_objects where rownum <= (select max - min + 1 from test);select test.id ,rownum + test.min - 1
from all_objects,all_objects,test where rownum <= test.max - test.min + 1;
0001 1001 2002-12-12 2003-02-07 0.80
0002 1001 2002-12-24 2003-05-12 0.80
0003 1001 2003-08-10 2003-12-18 0.80表示员工1001分配了三个任务,时间段分别如上,每天承担的工作量是80%。现在我要查出一个ResultSet,信息是日期和工作量,日期是每天的(从最小的startDate到最大的endDate之间的每一天),工作量是叠加的(如果某天重复安排在多个任务中,它们的工作量要相加)。这就是原始问题,我本来怕说不明白就简化了一下问题,没想到偏了 :)请再帮忙,多谢。
不就日期的计算么????还有就是all_objects,不是我写多了,我只是替你考虑而已!
当然如果是日期,一个all_objects足够了!在解决一条的基础上怎么解决多条这样的记录
你自己动动脑筋变通一下?同样是构造集合的表连接而已!
biti_rainy大侠: 你的方法不错,两个all_objects我的机器承受不起。:) 直接把你的sql语句换一下不行,报“单行子查询返回多个行”,因为我说了会有重叠,不是一条记录变多条,是多条记录变多条,还要把重叠的日期的worktime给sum起来。 我按你们的思路,大体上有一个解决。
不是最终的方案,不过,总好过在EJB中一句句去循环了。多谢各位。分是不会少了大家的,:)
2:报“单行子查询返回多个行”这个当然是你自己调整的了,很明显你先前给的条件不可能返回多行的
主要按照两句中第一句的思路参考内容:www.itpub.net
oracle数据库开发版置顶的一个文章,关于 ...可以当作什么精华。的什么什么的一个sql题目,本质上就是以前流行的微软的一个考试题目的思路
http://www.itpub.net/showthread.php?s=&threadid=45939
select a.id,a.min + b.num -1 from test a,(select rownum num from all_object where rownum <= a.max - a.min +1 ) b;
因为我当前没有ORACLE调试环境,不知道上面的语法是否有错误。如果不行,使用下面这个:
select a.id,a.min + b.num -1 from test a,
(select rownum num from all_object where rownum <= (select max -min +1 from text)) b;
这种写法有一个缺陷就是如果test 表中有多条记录时出错,所以视具体情况加上WHERE。
我没有测试这样的速度是不是要快些,我觉得应该没问题。