注册 登录
编程论坛 SQL Server论坛

求一个解决方法

stwenfe 发布于 2008-01-05 14:38, 858 次点击
求一个解决方法
有两个表
姓名  证书名称1  发证时间1  有效日期1       证书名称2      发证时间2     有效日期2  
1      资格证1    1990-1-1   发证时间+有效期     资格证2      1992-1-1     发证时间+有效期

证书名称 有效期  
资格证1  2年
资格证2  1年

现在想直接用发证时间加上资格证对应的有效期得到有效日期,应该怎么写sql啊
2 回复
#2
madpbpl2008-01-05 20:30
create table long1(姓名 varchar(10) not null,证书名称1 varchar(30),发证时间1 smalldatetime,证书名称2 varchar(20),发证时间2 smalldatetime )
insert into long1 values('1','资格证1','1900-1-1','资格证2','1992-1-1')
go

create table long2 (姓名 varchar(10) not null,证书名称 varchar(30),有效期 int)
insert into long2 values ('1','资格证1',2)
insert into long2 values ('1','资格证2',1)
go

select a.姓名,发证时间1,dateadd(year,有效期,发证时间1) as 有效日期1,证书名称2,发证时间2,dateadd(year,有效期,发证时间2) as 有效日期2
from long1 a inner join long2 b on a.姓名=b.姓名
不知道楼主是这个意思吗?
我的日期取的还是有点问题,不尽如人意。
#3
stwenfe2008-01-05 22:56
谢谢楼上的,我是这个意思,用自连接的内连接方式解决了
select 姓名 ,发证时间1,DateAdd(yyyy,表21.有效期,发证时间1),发证时间2,DateAdd(yyyy,表22.有效期,发证时间2) from 表1,表2 表21 inner join 表2 表22 on 表21.证书名称=‘资格证1’ and 表22.资格证=‘资格证2’

表2 的两个别名 表21 和表22
1