一样的问题,你先说一下,具体@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语句想实现的功能。

解决方案 »

  1.   

    你用以下测试:得到我的结果:
    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