declare @pid varchar(10),@pname varchar(10),@summ money,@payed money,@monthplan money,@monthless money,@payfor money
set @pid = '总 计:'
set @pname=''
set @summ=(select sum(summ) from money)
set @payed=(select sum(payed) from money)
set @monthplan=(select sum(monthplan) from money)
set @monthless=(select sum(monthless) from money)
set @payfor=(select sum(payfor) from money)
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 @pid as pid,@pname as pname,@summ as summ,@payed as payed,@monthplan as monthplan,@monthless as monthless,@payfor as payfor
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
) t
order by case pid when '总 计:' then 1 else 0 end
GO
昨晚这样还不行吗?
set @pid = '总 计:'
set @pname=''
set @summ=(select sum(summ) from money)
set @payed=(select sum(payed) from money)
set @monthplan=(select sum(monthplan) from money)
set @monthless=(select sum(monthless) from money)
set @payfor=(select sum(payfor) from money)
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 @pid as pid,@pname as pname,@summ as summ,@payed as payed,@monthplan as monthplan,@monthless as monthless,@payfor as payfor
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
) t
order by case pid when '总 计:' then 1 else 0 end
GO
昨晚这样还不行吗?
set @pid = ''
set @pname='总 计:'
set @summ=(select sum(summ) from money)
set @payed=(select sum(payed) from money)
set @monthplan=(select sum(monthplan) from money)
set @monthless=(select sum(monthless) from money)
set @payfor=(select sum(payfor) from money)
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 @pid as pid,@pname as pname,@summ as summ,@payed as payed,@monthplan as monthplan,@monthless as monthless,@payfor as payfor
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
) t
order by case pname when '总 计:' then 1 else 0 end
GO
比如select f1,f2 from ta union select f1,f2 from tb
它的结果会按f1,f2排序。你的pid,pname的值变化了,排序的结果当然也就变化了。
想重新指定排序,试试: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 @pid as pid,@pname as pname,@summ as summ,@payed as payed,@monthplan as monthplan,@monthless as monthless,@payfor as payfor
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
) t
order by 你的顺序