有一个小项目,字段来源不同的表,具体来源如下:
表dtrr_result中的字段
照核时间 (数据源:L3 dtrr_result.check_time)
生产时间 (数据源:L3 dtrr_result.product_date)
钢卷号 (数据源:L3 dtrr_result.coil_no)
板坯号 (数据源:L3 dtrr_result.slab_no)
出钢记号 (数据源:L3 dtrr_result.steel_grade)
精轧入口温度命中率(数据源:L3 dtrr_result.TEMP_FT_ENTRY_HIT )
加炉号 (数据源 L3 dtrr_result .FURNACE_NO)
计划板坯温度跳跃(数据源:L3 dtrp_result.ES_OUT_TEMP_NOM )
各段在炉时间 (数据源:L3 dtrr_reuslt.factzonetm2)
总在炉时间(数据源:L3 dtrr_result.IN_FURNACE_PERIOD )
拒收原因 (数据源:L3 dtrr_result.REJECT_CAUSE) (筛选条件 REJECT_CAUSE为 50 或 51 的过滤掉)
表l2_charactor中的字段
钢卷号 (数据源:L3 L2_charactor.prod_id )
实际中间坯厚度(数据源:L3 l2_charactor.FM_IN_ROLL_THICK_NOM)
出炉温度 (数据源:L3 l2_charactor.FCEXTEMP)
表dtrr_result 和表 l2_charactor通过 coil_no=prod_id来对勾。
要加上条件:
delete * from dtrr_result where coil_no not in (select distinct PROD_ID from l2_charactor);
保证钢卷号信息完整。请问用oracle 存储过程如何实现上面的功能。
现在的想法是:先从dtrr_result表中把需要的字段筛选出来现放到临时表中,再把l2_charactor表中需要的字段筛选出来放到另外一张临时表中,再根据条件处理
然后left join 成一张表(以dtrr_result表为主表)像这种要求,如果不用动态SQL能实现吗,如何实现,(事先不把临时表建好,因为实际应用表结构是不预知的),望各位帮忙解答谢谢
表dtrr_result中的字段
照核时间 (数据源:L3 dtrr_result.check_time)
生产时间 (数据源:L3 dtrr_result.product_date)
钢卷号 (数据源:L3 dtrr_result.coil_no)
板坯号 (数据源:L3 dtrr_result.slab_no)
出钢记号 (数据源:L3 dtrr_result.steel_grade)
精轧入口温度命中率(数据源:L3 dtrr_result.TEMP_FT_ENTRY_HIT )
加炉号 (数据源 L3 dtrr_result .FURNACE_NO)
计划板坯温度跳跃(数据源:L3 dtrp_result.ES_OUT_TEMP_NOM )
各段在炉时间 (数据源:L3 dtrr_reuslt.factzonetm2)
总在炉时间(数据源:L3 dtrr_result.IN_FURNACE_PERIOD )
拒收原因 (数据源:L3 dtrr_result.REJECT_CAUSE) (筛选条件 REJECT_CAUSE为 50 或 51 的过滤掉)
表l2_charactor中的字段
钢卷号 (数据源:L3 L2_charactor.prod_id )
实际中间坯厚度(数据源:L3 l2_charactor.FM_IN_ROLL_THICK_NOM)
出炉温度 (数据源:L3 l2_charactor.FCEXTEMP)
表dtrr_result 和表 l2_charactor通过 coil_no=prod_id来对勾。
要加上条件:
delete * from dtrr_result where coil_no not in (select distinct PROD_ID from l2_charactor);
保证钢卷号信息完整。请问用oracle 存储过程如何实现上面的功能。
现在的想法是:先从dtrr_result表中把需要的字段筛选出来现放到临时表中,再把l2_charactor表中需要的字段筛选出来放到另外一张临时表中,再根据条件处理
然后left join 成一张表(以dtrr_result表为主表)像这种要求,如果不用动态SQL能实现吗,如何实现,(事先不把临时表建好,因为实际应用表结构是不预知的),望各位帮忙解答谢谢
解决方案 »
- SQL嵌入式入门
- 复合索引与单独索引优先级,以及rebuild索引的存储过程
- 关于oracle的空值和孔字符串的判定问题
- 请问怎么在Where语句中使用字段别名?
- ★★“ORA:12541:TNS 没有监听器” 的问题★★
- 怎样取出到达时间离当前时间最近的四条航班信息的纪录,在线跪求!!!
- 怎么安装ORACLE,十万火急!!!!!
- 太菜拉。。关于动态执行问题!
- 可不可以用function或是procedure返回多条记录?
- 高手帮忙!如何将oracle数据库中的表结构导出成sql文件(类似sql server 的导出器)
- 多表连接时用inner join还是where?
- table类型的数据如何进行清空
A中有字段 A1,A2,A3,A4,A5,A6,A7,A8,A9.... ,其中A1是关键字
B中有字段 B1,B2,B3,B4,B5,B6,B7,B8,B9....., 其中B1是关键字
A和B 通过A1=B1来 left join
现在我要生成一张表从A中取A1,A2,A3,A4,A5字段,从B中取B1,B2,B3字段,然后left join 成一张表
条件有:从A中取数据时过滤 A5 not in ('50','55'),
A中的数据取出来后要执行下面的语句删除无效记录
delete * from a where a2 not in (select distinct b1 from b);
最后 left join 成一张大表
用存储过程如何实现谢谢
is
begin
execute immediate 'create table tmp1 as
select a.a1,
a.a2,
a.a3,
a.a4,
a.a5,
b.b1,
b.b2,
b.b3
from A a,
B b
where a.a1 = b.b1(+)
and exists (select 1 from b t where t.b1 = a.a1)
and a.a5 not in (''50'',''51'')';end proc;
/只能用动态sql,因为建表语句不能写在procedure中。DML操作。
as
select a.a1,a.a2,a.a3,a.a4,a.a5,b.b1,b.b2,b.b3
from (select * from a
where not exists(select 1 from b where b1=a.a2)
and a5 not in('50','55'))a
left join b
on a.a1=b.b1
(事先不把临时表建好,因为实际应用表结构是不预知的)是什么意思,表名和字段实现都不知道?那么条件如何确定