读书人

怎么在MS-SQL中根据前一列的日期生成

发布时间: 2014-01-25 22:37:26 作者: rapoo

如何在MS-SQL中根据前一列的日期,生成另外一列结果
表名:T (100W行以上)
表字段:

Cus_Mobile,Date_Daoqi
13800123545,2012-01-01
13101055858,2014-01-01
18912345678,NULL
18102012345,2015-01-01

需要得到的结果:以当前日期2014-01-23精确到月就可以了
Cus_Mobile, Date_Daoqi, A
13800123545,2012-01-01,已到期
13101055858,2014-01-15,未到期1个月
18912345678,NULL,未知
18102012345,2015-01-01, 未到期13个月

感谢各位C友的协助!!!
[解决办法]


select Cus_Mobile,Date_Daoqi,
case when datediff(month,getdate(),f_date) < 0 then '过期' else '未到期'+cast(datediff(month,getdate(),f_date)+1 as varchar)+'个月' end A from T

[解决办法]
if object_id('[TB]') is not null drop table [TB]
create table [TB]([Cus_Mobile] bigint,[Date_Daoqi] datetime)
insert[TB]
select 13800123545,'2012-01-01' union all
select 13101055858,'2014-01-15' union all
select 18912345678,null union all
select 18102012345,'2015-01-01'

select * from [TB]



SELECT * ,
[AA] = CASE WHEN date_daoqi < DATEADD(mm,-1,GETDATE()) THEN '已到期'
WHEN date_daoqi IS NULL THEN '未知'
ELSE '未到期' + CONVERT(VARCHAR, DATEDIFF(mm, DATEADD(mm,-1,GETDATE()),
date_daoqi))
+ '个月'
END
FROM dbo.TB

/*
Cus_MobileDate_DaoqiAA
138001235452012-01-01 00:00:00.000已到期
131010558582014-01-15 00:00:00.000未到期1个月
18912345678NULL未知
181020123452015-01-01 00:00:00.000未到期13个月*/

读书人网 >SQL Server

热点推荐