【发布时间】:2015-11-23 21:36:09
【问题描述】:
我正在尝试通过使用嵌套的 select 语句对聚合函数的总数求和,然后我在最后有一个 group by,但我收到一个错误,即关键字 by 不是预期的。
代码如下:
SELECT SUM(TOTAL) as CURTOTAL, SUM(LYTOTAL) as CURLYTOTAL
from
(select
pf.*, ps.*, st.*, RANK() OVER (ORDER BY JULsaless desc) as TOTRANK,
JANSALESS + FEBSALESS + MARSALESS + APRSALESS + MAYSALESS + JUNSALESS + JULSALES as TOTAL,
JANLYSAL + FEBLYSAL + MARLYSAL + APRLYSAL + MAYLYSAL + JUNLYSAL + JULLYSAL as LYTOTAL`
from
payssfile pf left joinpayssspec ps on pf.str#` = ps.str# and pf.item# = ps.item# join storefile
st on
pf.str# = st.str# where(year = 2015 and totaltype = '' and pf.str# =38))` group by pf.str#;`
然后当我去跑步时,我会收到以下消息:
此处没有预期关键字 BY。检测到语法错误 关键字 BY。有效令牌的部分列表是 FOR USE SKIP WAIT 除了优化之外,使用 FETCH ORDER UNION。
【问题讨论】:
-
你的数据库是什么?
-
IBM 数据库
-
不确定反引号是怎么回事。
pf.str#都是 38 岁,你为什么要分组?你还在用TOTRANK吗?希望优化器足够聪明,可以去掉你并不真正需要的东西。看来可以直接对表达式求和sum(JANLYSAL + ... + JULLYSAL)。 -
我正在使用这个调用在 c# 中动态构建一个表,并且 totrank 与其他东西一起使用。从该语句中提取的所有内容都在表中使用
标签: sql db2 aggregate-functions