#2
qdxqiang2016-09-27 16:05
|
(case when ddate>=U.dBegin then
CASE WHEN RdRecord.bRdFlag <>0 THEN 1 ELSE -1 END ELSE 0 END) * convert(decimal(38,8),iquantity) as iquantity,
(case when ddate>=U.dBegin then
CASE WHEN RdRecord.bRdFlag <>0 THEN 1 ELSE -1 END ELSE 0 END ) * (case Inventory.iGroupType when 0 then Null when 1 then
iquantity/Cu_f.iChangRate else rdrecords.iNum end ) as iNum,
(case when ddate>=U.dBegin then 0 else
CASE WHEN RdRecord.bRdFlag <>0 THEN 1 ELSE -1 END END) * convert(decimal(38,8),iquantity) as iQCJCSL
from
rdrecord inner join rdrecords on rdrecord.id=rdrecords.id
inner join inventory on rdrecords.cinvcode=inventory.cinvcode
inner join UFSystem..UA_Period U ON dbo.RdRecord.dDate <=U.dEnd
---UA_Period是月结区间表,dBegin是每个月的月初日期,dEnd是每个月的月末日期。
以上代码受UA_Period表中值的限制,只能取出当月的值,跨月取不到值,而且不能取任何日期区间的值。
想达到的效果,通过什么方式替换UA_Period表,通过日期区间过滤条件,可以取到任一区间的值,日期过滤条件最好不要分成两个,而是一个日期过滤条件,从****到****区间来过滤。
本人初接触SQL代码,请各位帮助解答,谢谢!
[此贴子已经被作者于2016-9-27 15:26编辑过]