假如一张表里面有这么几条这样的数据
startTime endTime value
2013-02-02 2013-02-15 128
2013-02-25 2013-03-05 64
2013-02-24 2013-03-12 68
在查询的时候呢,我需要的业务逻辑是这样的,判断endTime是否大于2月了,也就是endTime>'2013-02-28'
如果大于的话呢,就算出endTime与startTime之间间隔的天数,使用value除以天数,得到它的值,如果没有跨月的话就直接查询value的值。
这样可以实现吗?
startTime endTime value
2013-02-02 2013-02-15 128
2013-02-25 2013-03-05 64
2013-02-24 2013-03-12 68
在查询的时候呢,我需要的业务逻辑是这样的,判断endTime是否大于2月了,也就是endTime>'2013-02-28'
如果大于的话呢,就算出endTime与startTime之间间隔的天数,使用value除以天数,得到它的值,如果没有跨月的话就直接查询value的值。
这样可以实现吗?
(case when endTime>'2013-02-28' then datediff(endTime,startTime) else value end )as value
from tb
现在我是这样做的。
CASE WHEN (t1.starttime<'2013-01-01')
THEN ROUND((t1.consumed/DATEDIFF(deadline,starttime)+1)*DATEDIFF(deadline,'2013-01-01'),0)
ELSE t1.consumed
END AS 'consumed',也可以哈,想不到Sql这么强大。我等小菜得努力啦。
最后,感谢两位大哥的回复。祝两位大哥生活愉快,事业顺心!