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

sql 同一表A中两字段相减 (100分)
sql   同一表A中两字段(使用终期限,使用年限)相减后,得到   使用起期限,将值赋给B中的b字段,其中使用终期限,使用年限为vachar型

实际情况是这样的:
使用终期限(例如   20410519)   ,   使用年限(50)   现在要得到   使用起期限的值  

我试着写了一下:
select   convert(int,(LEFT(使用终期限,4))-convert(int,使用起期限)   as   b     from   A   where   (A.ID0   =   B.IDO)
但是执行报错,请各位高手指点,急用!!
谢谢了,分全都给了!

------解决方案--------------------
你的語句這麼改

select convert(int,LEFT(使用终期限,4)) - convert(int,使用起期限) as 使用年限 from A inner join B On A.ID0 = B.IDO
------解决方案--------------------

赋值给B需要update B 吧,

update B set X =TabB.b from B jion (
select convert(int,(LEFT(使用终期限,4))-convert(int,使用起期限)) as b from A
) TabB on Tabb.ido = a.ido


------解决方案--------------------
如果需要将使用起期限转换为与使用终起期限一样的格式,使用convert转换一下:

declare @EndDate varchar(10),@years varchar(10)
set @EndDate = '20410519 '
set @years = '50 '
select convert(varchar,dateadd(year,-cast(@years as int),cast(@EndDate as datetime)),112)

/*结果
19910519
*/

select CONVERT(varchar,dateadd(year,-cast(使用终期限 as int),cast(使用年限 as datetime)),112)
from YwblDBCHKUPDOCTBL