首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

怎么在MS-SQL中根据前一列的日期,生成另外一列结果

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

如何在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个月*/

热点排行