请高手帮我优化这条SQL语句

tobephonix 2002-10-13 03:04:18
SELECT A.GJLDATE GJLDATE,
A.GJLGDID GJLGDID,
GBCNAME,
GBBARCODE,
GPHSJJ,
GPSJ,
SUM(DECODE(A.GJLTRAN,'1',A.GJLSL,'2',A.GJLSL,'3',A.GJLSL,'4',A.GJLSL,'5',A.GJLSL,'6',A.GJLSL,0)) JHSL,
-1*SUM(DECODE(A.GJLTRAN,'E',A.GJLSL,'F',A.GJLSL,'G',A.GJLSL,'H',A.GJLSL,0)) XSSL,
SUM(B.GJLQMSL) KCSL
FROM GOODSJXCLIST A,GOODSPRICE,GOODSBASE,
(SELECT GJLGDID,GJLDATE,GJLQMSL FROM GOODSJXCLIST WHERE GJLSEQ IN (SELECT MAX(GJLSEQ)FROM GOODSJXCLIST GROUP BY GJLDATE,GJLGDID) ) B
WHERE A.GJLGDID=GPGDID AND
A.GJLGDID=B.GJLGDID AND
A.GJLDATE=B.GJLDATE AND
A.GJLGDID=GBID AND
A.GJLMFID = '2020099' AND
'A.GJLGDID'='A.GJLGDID' AND
( A.GJLDATE >= TO_DATE('2002-10-01','YYYY-MM-DD') AND A.GJLDATE <= TO_DATE('2002-10-13','YYYY-MM-DD') ) AND
'GOODSBASE.GBBARCODE'='GOODSBASE.GBBARCODE'
GROUP BY A.GJLDATE,
A.GJLGDID,
GBCNAME,
GBBARCODE,
GPHSJJ,
GPSJ
ORDER BY GJLDATE
;
这是一条放在数据窗口中的语句,所以不能用临时表,由于涉及的三个表的数据都很大,执行这条语句要花一个多小时,请各位高手指点该怎么优化这条语句;
...全文
50 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
llyhappy 2002-10-14
  • 打赏
  • 举报
回复
最好将业务分开,用视图是可行的方法
ice2water 2002-10-13
  • 打赏
  • 举报
回复
建议用存储过程
datadom 2002-10-13
  • 打赏
  • 举报
回复
进行分解吧,可以先把嵌套分出来
你应该把一部分作成视图先在服务器上执行
放在DATAWINDOW中的SQL应该尽量简单
别人没有办法帮你的,因为不了解你的业务关系
你自己漫漫分解吧

2,596

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧