22,210
社区成员
发帖
与我相关
我的任务
分享
----select部分基本没什么优化的
SELECT distinct ISNull(e.FNumber,'') AS FShopNumber,
ISNull(e.FName,'') AS FShopName,S.FBillNo,S.FDate,
sum(SE.famount) famount,e.FSendDay,
DateDiff(day,DateAdd(day,FSendDay,S.FCheckDate),GetDate()) AS FDiffDay
From SEOutStock S -----JOIN部分,还是检查下index问题
Inner Join SEOutStockEntry SE
On S.FInterID=SE.FInterID
Left Join t_Emp e On S.FEMPID=e.FItemID
WHERE
----where条件部分逻辑看上去不是很清晰,如S.FDate>='2008-01-01',你下面又有AND ('2010-08-31'='' OR S.FDate<='2010-08-31')出现,还有AND (''='' Or e.FNumber<='') AND (''='' Or e.FNumber>='')这两个可以整合到一起去。
S.FDate>='2008-01-01' and s.FTrantype=83
AND S.FBillNo Not In (Select FBillNO_Src From t_ItemCheckentry)
AND (''='' Or e.FNumber<='') AND (''='' Or e.FNumber>='')
AND (''='' OR S.FBillNo>='') AND (''='' OR S.FBillNo<='')
AND ('2010-08-31'='' OR S.FDate<='2010-08-31')
group by s.fbillno,s.fdate,e.FNumber,e.FName,e.fsendday,S.FCheckDate
ORDER BY FDiffDay
AND (''='' Or e.FNumber<='') AND (''='' Or e.FNumber>='')
AND (''='' OR S.FBillNo>='') AND (''='' OR S.FBillNo<='')
AND ('2010-08-31'='' OR S.FDate<='2010-08-31')