date(时间) pmt(账期)
2014-12-15 月结
2014-12-15 30天
2014-12-15 月结30天
计算方法:
月结:到本月的最后一天结算,2014-12-15,结果就是(2014-12-31) - (2014-12-15)=16天
30天:在日期的基础上加30天,2014-12-15,结果就是2015-01-14=30天
月结30天:本月剩下的日期+30天,2014-12-15,结果是16+30=46天
请问如果要选择,到期日分别为3天,7天,15天的记录,这个应该怎么写。
------解决思路----------------------
月结、天数分两个字段。
WITH table1(startdate,monthend,days) AS (
SELECT '2014-12-15',1,0 UNION ALL --月结
SELECT '2014-12-15',0,30 UNION ALL --30天
SELECT '2014-12-15',1,30 UNION ALL --月结30天
SELECT '2014-12-15',0,3 UNION ALL --3天
SELECT '2014-12-15',0,7 UNION ALL --5天
SELECT '2014-12-15',0,15 --15天
)
,t AS (
SELECT startdate,
CASE WHEN monthend = 1 THEN
DateAdd(day,
days,
DateAdd(month,
1,
Convert(varchar(7),startdate,120)+'-01'))
ELSE
DateAdd(day,days,startdate)
END expdate
FROM table1
)
SELECT *,
DateDiff(day,startdate,expdate) realdays
FROM t
startdate expdate realdays
---------- ---------- -----------
2014-12-15 2015-01-01 17
2014-12-15 2015-01-14 30
2014-12-15 2015-01-31 47
2014-12-15 2014-12-18 3
2014-12-15 2014-12-22 7
2014-12-15 2014-12-30 15