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

同一个表的行数据 UPDATE
示例:
  ID 单别 单号 金额 赋值金额 赋值单号 检索条件
  01 1 1 50 2-2
  02 2 2 100  

  if 单别=LEFT(检索条件,1) and 单号=RIGHT(检索条件,2)
 BEGIN UPDATE 赋值金额= 金额,赋值单号=单别+'-'+单号
  
 最后 result:
  ID 单别 单号 金额 赋值金额 赋值单号 检索条件
  01 1 1 50 2-2
  02 2 2 100 50 1-1

  咋用UPDATE 实现这样的效果呢!
  谢谢!

 

------解决方案--------------------
/*
示例:
ID 单别 单号 金额 赋值金额 赋值单号 检索条件
01 1 1 50 2-2
02 2 2 100

if 单别=LEFT(检索条件,1) and 单号=RIGHT(检索条件,2)
 BEGIN UPDATE 赋值金额= 金额,赋值单号=单别+'-'+单号
  
 最后 result:
ID 单别 单号 金额 赋值金额 赋值单号 检索条件
01 1 1 50 2-2
02 2 2 100 50 1-1

咋用UPDATE 实现这样的效果呢!
*/

if
OBJECT_ID('tbl')is not null
drop table tbl
go
create table tbl(
ID varchar(4),
单别 varchar(4),
单号 varchar(4),
金额 numeric(6,2),
赋值金额 numeric(6,2),
赋值单号 varchar(10),
检索条件 varchar(10)
)
go
insert tbl (ID,单别,单号,金额)
select '01','1','1',50
union all
select '02','2','2',100

update tbl
set 赋值金额=a.金额,赋值单号=a.单别+'-'+a.单号
from tbl a where a.ID=ID
/*
ID 单别 单号 金额 赋值金额 赋值单号 检索条件
01 1 1 50.00 50.00 1-1 NULL
02 2 2 100.00 100.00 2-2 NULL
*/
--楼主的条件不怎么明白,特别是检索条件是什么
------解决方案--------------------
SQL code

create table tb
(ID varchar(2),单别 int,单号 int,金额 int,
赋值金额 varchar(3),赋值单号 varchar(4),检索条件 varchar(4))
insert into tb
select '01',1,1,50,null,null,'2-2' union all
select '02',2,2,100,null,null,null

update a set 赋值金额=b.金额,赋值单号=ltrim(b.单别)+'-'+ltrim(b.单号)
from tb a left join tb b 
on left(b.检索条件,1)=a.单别 and right(b.检索条件,1)=a.单号

select * from tb
/*
ID   单别          单号          金额          赋值金额 赋值单号 检索条件
---- ----------- ----------- ----------- ---- ---- ----
01   1           1           50          NULL NULL 2-2
02   2           2           100         50   1-1  NULL
*/