我的表里有字段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月发生的数据,不知怎么写法了。
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月发生的数据,不知怎么写法了。
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
取数据的月份
select * from TB where datepart(m,strq)=4 and datepart(m,endrq)=4
SELECT
MAX(CASE WHEN MONTH(ENDRQ)>=5 THEN DATEDIFF(DAY,STRQ,'2009-4-30')*JE
ELSE DATEDIFF(DAY,STRQ,ENDRQ)*JE END)
FROM TB