日期:2014-05-18  浏览次数:20520 次

再讨论如何把上面的a行对应的数据更新到b行?
create   table   Test
(Co1   varchar(5),
co2   varchar(10)
)
GO

insert   into   test   (Co1,co2)   values( 'a '     ,   'xyz ')
insert   into   test   (Co1,co2)   values( 'b '   ,   'm ')
insert   into   test   (Co1,co2)   values( 'b '     ,     'n ')
insert   into   test   (Co1,co2)   values( 'b '     ,   'y ')
insert   into   test   (Co1,co2)   values( 'a '   ,     'lpg ')
insert   into   test   (Co1,co2)values( 'b '     ,   'u ')
insert   into   test   (Co1,co2)   Values( 'b '     ,   'f ')
---如何把上面的a行对应的数据更新到b行?
---   wgzaaa   (95)、的方法:
declare   @A   varchar(10)
set   @A= ' '
update   test   set   co1=(case   when   co1= 'a '   then   co1   else   @A   end),
@A=(case   when   co1= 'a '   then   co2   else   @A   end)
go
select   *   from   test
a                         xyz
xyz                   m
xyz                     n
xyz                     y
a                         lpg
lpg                     u
lpg                     f


如果数据改一改
delete   from   Test
go

insert   into   test   (Co1,co2)   values( 'b '   ,   'm ')
insert   into   test   (Co1,co2)   values( 'b '     ,     'n ')
insert   into   test   (Co1,co2)   values( 'b '     ,   'y ')
insert   into   test   (Co1,co2)   values( 'a '   ,     'lpg ')
insert   into   test   (Co1,co2)values( 'b '     ,   'u ')
insert   into   test   (Co1,co2)   Values( 'b '     ,   'f ')
如何得到?
可以加一列identity,最好是select   出来的别的方法。
xyz                   m
xyz                     n
xyz                     y
a                         lpg
lpg                     u
lpg                     f




------解决方案--------------------
请问,当数据如下:
b m
b n
b y
a lpg
b u
b f

楼主希望得到怎样的结果?
------解决方案--------------------
select id=identity(int),* into #1 from test
select [co1]=case when co1= 'b ' then
(select top 1 co2 from #1 where co1= 'a ' and id <a.id