可以考虑用 COMPUTE

解决方案 »

  1.   

    try:declare @pid varchar(10), @pname varchar(100),@summ money,@payed money,@monthplan money,@monthless money,@payfor money,@sum money 
    set @pid='总计' 
    set @pname='总计' 
    select @summ=(select sum(summ) from money) 
    select @payed=(select sum(payed) from money) 
    select @monthplan=(select sum(monthplan) from money) 
    select @monthless=(select sum(monthless) from money) 
    select @payfor=(select sum(payfor) from money) 
    --select @sum=(select sum(payed)from money where money.pid=project.pid) 
    select * from 
    (select pj.pid ,pj.pname ,mn.summ ,mn.payed,mn.monthplan,mn.monthless,mn.payfor from project as pj left join money as mn on pj.pid=mn.pid 
    union 
    select pje.pid ,pje.pname,pje.summ ,sum(mn.payed)as payed,pje.monthplan,pje.monthless,pje.payfor from money as mn,project as pj  left join pje on pj.bid=pje.bid where mn.pid=pj.pid group by pje.pid ,pje.pname,pje.summ ,pje.payed,pje.monthplan,pje.monthless,pje.payfor 
    union 
    select @pid as pid,@pname as pname,@summ as summ,@payed as payed,@monthplan as monthplan,@monthless as monthless,@payfor as payfor ) t
    order by case when pid like '%总计%' then 1 else 0 end
    GO 
      

  2.   

    compute不行,我试过了,不知道wuyi8808是用的什么方式,呵呵,也谢谢了,htl258你搞两个'总计'了,呵呵,
      

  3.   

    不好意思,引用你的,没注意看.
    declare @pid varchar(10), @pname varchar(100),@summ money,@payed money,@monthplan money,@monthless money,@payfor money,@sum money 
    set @pid='总计' 
    set @pname='' 
    select @summ=(select sum(summ) from money) 
    select @payed=(select sum(payed) from money) 
    select @monthplan=(select sum(monthplan) from money) 
    select @monthless=(select sum(monthless) from money) 
    select @payfor=(select sum(payfor) from money) 
    --select @sum=(select sum(payed)from money where money.pid=project.pid) 
    select * from 
    (select pj.pid ,pj.pname ,mn.summ ,mn.payed,mn.monthplan,mn.monthless,mn.payfor from project as pj left join money as mn on pj.pid=mn.pid 
    union 
    select pje.pid ,pje.pname,pje.summ ,sum(mn.payed)as payed,pje.monthplan,pje.monthless,pje.payfor from money as mn,project as pj  left join pje on pj.bid=pje.bid where mn.pid=pj.pid group by pje.pid ,pje.pname,pje.summ ,pje.payed,pje.monthplan,pje.monthless,pje.payfor 
    union 
    select @pid as pid,@pname as pname,@summ as summ,@payed as payed,@monthplan as monthplan,@monthless as monthless,@payfor as payfor ) t
    order by case when pid like '%总计%' then 1 else 0 end
    GO 
      

  4.   

    谢谢htl258两次指导,@pname='总计',还是会发生情况二的.....