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看看行不行 写的有点乱,但不复杂!

解决方案 »

  1.   

    select T1.ID号,T1.产品名称,T1.单位,T1.设计数量,TT.(5日完成数量),TT.MQty,TT.YQty,T2.本年计划数量,(TT.Qty/T2.本年计划数量) as 本年完成比,TT.AllQty as 开累完成数量,(TT.AllQty/T1.设计数量) as 开累完成百分比
    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这样应该是对了就是太烦琐了 看看有没有简单点的办法,我也是刚学!
      

  2.   

    create proc p_qry
    @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'
      

  3.   

    zjcxc(邹建) 牛人!多谢!水手的差了个关键问题,我的报表日期是个随意的。揭贴。