我的表里有字段ksrq和endrq、je三字段,我现在要计算时间天数内发的总金额,我现在写的是
DATEDIFF(day, strq,endrq)*je=总金额。但是有个问题就是假如:
strq            endrq
2009-04-03               2009-04-10
2009-04-05               2009-05-02
2009-04-06               2009-04-10
.                         .
2009-04-30               2009-05-05   而要是我只要计算4月份的金额的话问题就来了,按我上面的写法是endrq减strq的话,就会把5月份的几天一起计算进去了。但是我只要4月发生的数据,不知怎么写法了。

解决方案 »

  1.   


    select  (case when  endrq>='2009-05-01' then datediff(day,strq,'2009-04-30')*je
                  else DATEDIFF(day, strq,endrq)*je end) as 總金額
    from  tb
      

  2.   


    取数据的月份
    select * from TB where  datepart(m,strq)=4 and datepart(m,endrq)=4
      

  3.   


    SELECT 
    MAX(CASE WHEN MONTH(ENDRQ)>=5 THEN DATEDIFF(DAY,STRQ,'2009-4-30')*JE 
    ELSE DATEDIFF(DAY,STRQ,ENDRQ)*JE END) 
    FROM TB