假如一张表里面有这么几条这样的数据
     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的值。
这样可以实现吗?

解决方案 »

  1.   

    select *,if(endTime>'2013-02-28',value/datediff(endTime,startTime),value) from tt
      

  2.   

    select startTime,endTime,
      (case when  endTime>'2013-02-28' then datediff(endTime,startTime) else value end )as value
    from tb
      

  3.   

    感谢两位大哥的回复哈。
    现在我是这样做的。
    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这么强大。我等小菜得努力啦。
    最后,感谢两位大哥的回复。祝两位大哥生活愉快,事业顺心!