高手不在吗?
declare @t1 table(cname varchar(2),sl int,ph varchar(10))
insert into @t1
select 'a',150,'010101'
union all select 'a',200,'020304'
union all select 'b',300,'040506'
declare @t2 table(cname varchar(2),sl int,ph varchar(10))
insert into @t2
select 'a',150,'020304'
union all select 'b',200,'040506'
--数据处理
declare @t table(cname varchar(2),sl int,ph varchar(10),sl1 int,sl2 int)
insert into @t(cname,ph,sl1,sl2)
select a.cname,a.ph,a.sl,b.sl
from @t1 a join @t2 b on a.cname=b.cname
order by a.cname
declare @cname varchar(2),@sl int,@s2 int
update @t set @sl=case cname when @cname then @s2 else sl2 end
,sl=case when @sl>sl1 then sl1 else @sl end
,@s2=@sl-sl1,@cname=cname
--显示处理结果
select cname,sl,ph from @t where sl>0
结果为:
cname sl ph
-------------------------
a 150 010101
b 200 040506
我想要的结果为:也就是 ph为(020304)的值不足时,在去减其他的ph的值
cname sl ph
-------------------------
a 150 020304
b 200 040506