一样的问题,你先说一下,具体@t1,@t2代表什么,想得到什么结果(干什么)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,(case when A.ph=B.ph then 0 else 1 end)相以得到结果,但不知UPDATE语句想实现的功能。
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,(case when A.ph=B.ph then 0 else 1 end)相以得到结果,但不知UPDATE语句想实现的功能。
1、如果@t2 也就是ph=020304 的sl=250 时的结果为cname sl ph
-------------------------
a 200 020304
a 50 010101
b 200 040506 2、1、如果@t2 也就是ph=020304 的sl=150 时的结果为
cname sl ph
-------------------------
a 150 020304
b 200 040506
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.cnamedeclare @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