select B.JH,sum(dym),B.KJRQ,dateadd(month, datediff(month, -1,B.KJRQ), -1) from CSJING_SCSJB A join CSJING_FS B on A.JH=B.JH where A.RQ BETWEEN B.KJRQ and dateadd(month, datediff(month, -1,B.KJRQ), -1) group by B.JH,B.KJRQ
BETWEEN ...AND 不可以那么用么?怎么查询出来的行数不对?
你要注意dateadd(month, datediff(month, -1,B.KJRQ), -1)得到的结果是当月最后一天,但是是没有时间的,如果RQ字段是datetime型并且有记录时间部分,那么每个月最后一天的数据是统计不到的。dateadd(ms,-3,dateadd(month, datediff(month, -1,B.KJRQ), 0))改成这样就能统计到每月最后一天了