select T1.ID号,T1.产品名称,T1.单位,T1.设计数量,T3.(5日完成数量),T4.MQty,T5.YQty,T2.本年计划数量,(T5.Qty/T2.本年计划数量) as 本年完成比,T6.AllQty as 开累完成数量,(T6.AllQty/T1.设计数量) as 开累完成百分比
from
产品名称 T1,
本年计划 T2 ,
生产进度数据 T3,
(select sum(5日完成数量) as MQty from 生产进度数据 group by Month(日期) ) T4,
(select Sum(5日完成数量) as YQty from 生产进度数据 group by Year(日期) ) T5,
(select Sum(5日完成数量) as AllQty from 生产进度数据) T6
where
T3.ID=T1.ID and T3.ID=T2.ID看看行不行 写的有点乱,但不复杂!
from
产品名称 T1,
本年计划 T2 ,
生产进度数据 T3,
(select sum(5日完成数量) as MQty from 生产进度数据 group by Month(日期) ) T4,
(select Sum(5日完成数量) as YQty from 生产进度数据 group by Year(日期) ) T5,
(select Sum(5日完成数量) as AllQty from 生产进度数据) T6
where
T3.ID=T1.ID and T3.ID=T2.ID看看行不行 写的有点乱,但不复杂!
from
产品名称 T1,
本年计划 T2 ,
(select T3.ID as ID,T3.(5日完成数量) as 5日完成数量,T4.MQty as MQty,T5.YQty as YQty,T6.AllQty as AllQty
from
生产进度数据 T3
left join
(select sum(5日完成数量) as MQty from 生产进度数据 group by Month(日期) ) T4
on T3.ID=T4.ID
Left join
(select Sum(5日完成数量) as YQty from 生产进度数据 group by Year(日期) ) T5
on T3.ID=T5.ID
Left join
(select Sum(5日完成数量) as AllQty from 生产进度数据) T6
on T3.ID=T6.ID) TT
where TT.ID=T1.ID and TT.ID=T2.ID这样应该是对了就是太烦琐了 看看有没有简单点的办法,我也是刚学!
@dt datetime --查询日期
as
select a.ID号,a.项目名称,a.单位,a.设计数量
,b.[5日完成数量],b.本月完成数量,b.年累完成数量
,c.本年计划数量
,本年完成比=case isnull(b.年累计完成数量,0) when 0 then '0.00%'
else cast(cast(b.年累计完成数量*100./c.本年计划数量 as decimal(10,2)) as varchar)+'%' end
,开累完成数量=b.开累完成数量
,开累完成百分比=case isnull(b.开累完成数量,0) when 0 then '0.00%'
else cast(cast(b.开累完成数量*100./a.设计数量 as decimal(10,2)) as varchar)+'%' end
from 产品名称 a
left join(
select ID号
,[5日完成数量]=sum(case when datediff(day,日期,@dt) between 0 and 9 then [前5日完成数量] end)
,本月完成数量=sum(case when datediff(month,日期,@dt)=0 then [前5日完成数量] end)
,年累计完成数量=sum(case when datediff(year,日期,@dt)=0 then [前5日完成数量] end)
,开累完成数量=sum([前5日完成数量])
from 生产进度数据
where 日期<=@dt
group by ID号
)b on a.ID号=b.ID号
join 本年计划 c on a.ID号=c.ID号
go--调用
exec p_qry '2005-3-10'