日期:2014-05-17  浏览次数:20508 次

如何在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_Mobile Date_Daoqi AA
13800123545 2012-01-01 00:00:00.000 已到期
13101055858 2014-01-15 00:00:00.000 未到期1个月
18912345678 NULL 未知
18102012345 2015-01-01 00:00:00.000 未到期13个月*/