最近给单位些报表,写的sql语句如下:
select 一轧日实磅产量,一轧月实磅产量,棒材日实磅产量,棒材月实磅产量,一轧项目,一轧本日,棒材项目,棒材本日,棒材项目2,棒
材本日2,生产日报主表.日期 from 生产日报子表,生产日报主表
where 生产日报子表.编号 in(select 生产日报主表.编号 from 生产日报主表 where 日期='2009-07-03')and (len(一轧项目)>0
or len(一轧项目1)>0 or len(棒材项目)>0 or len(棒材项目1)>0 or len(棒材项目2)>0)and 生产日报主表.日期='[?ddd?]'
union
select 一轧日实磅产量,一轧月实磅产量,棒材日实磅产量,棒材月实磅产量,一轧项目1 ,一轧本日1 ,棒材项目1,棒材本日1 ,棒材项
目2,棒材本日2,生产日报主表.日期 from 生产日报子表,生产日报主表
where 生产日报子表.编号 in(select 生产日报主表.编号 from 生产日报主表 where 日期='[?ddd?]')and (len(一轧项目)>0 or
len(一轧项目1)>0 or len(棒材项目)>0 or len(棒材项目1)>0 or len(棒材项目2)>0)and 生产日报主表.日期='[?ddd|?]' order
by 日期 desc
 
改进后,改用连接查询:
select 一轧日实磅产量,一轧月实磅产量,棒材日实磅产量,棒材月实磅产量,一轧项目,一轧本日,棒材项目,棒材本日,棒材项目2,棒
材本日2,生产日报主表.日期
 from 生产日报子表 inner join 生产日报主表 on 生产日报子表.编号 = 生产日报主表.编号
 where 生产日报主表.日期='2009-07-03'
and (len(一轧项目)>0 or len(一轧项目1)>0 or len(棒材项目)>0 or len(棒材项目1)>0 or len(棒材项目2)>0)
union
select 一轧日实磅产量,一轧月实磅产量,棒材日实磅产量,棒材月实磅产量,一轧项目1 ,一轧本日1 ,棒材项目1,棒材本日1 ,棒材项
目2,棒材本日2,生产日报主表.日期
 from 生产日报子表 inner join 生产日报主表 on 生产日报子表.编号 = 生产日报主表.编号
 where 生产日报主表.日期='2009-07-03'
and (len(一轧项目)>0 or len(一轧项目1)>0 or len(棒材项目)>0 or len(棒材项目1)>0 or len(棒材项目2)>0)
order by 日期 desc
我用的finereport 报表,实现随日期更新,最终报表sql如下:
select * from (select 一轧日实磅产量,一轧月实磅产量,棒材日实磅产量,棒材月实磅产量,一轧项目,一轧本日,棒材项目,棒材本日,棒材项目2,棒材本日2,生产日报主表.日期
 from 生产日报子表 inner join 生产日报主表 on 生产日报子表.编号 = 生产日报主表.编号
 where 生产日报主表.日期='[?ddd?]'
and (len(一轧项目)>0 or len(一轧项目1)>0 or len(棒材项目)>0 or len(棒材项目1)>0 or len(棒材项目2)>0)
union
select 一轧日实磅产量,一轧月实磅产量,棒材日实磅产量,棒材月实磅产量,一轧项目1 ,一轧本日1 ,棒材项目1,棒材本日1 ,棒材项目2,棒材本日2,
生产日报主表.日期
 from 生产日报子表 inner join 生产日报主表 on 生产日报子表.编号 = 生产日报主表.编号
 where 生产日报主表.日期='[?ddd?]'
and (len(一轧项目)>0 or len(一轧项目1)>0 or len(棒材项目)>0 or len(棒材项目1)>0 or len(棒材项目2)>0))a where (len(a.棒材项目)>0 or len(a.一轧项目)>0 or len(a.棒材项目2)>0)
    说明,开始使用in查询,发现速度比较慢,改用连接查询比较快,大伙有什么更好的改进性能的方法,可以提出来来