Sybase SQL中函数调用内的条件

时间:2014-12-16 21:27:47

标签: sql sybase

我正在尝试使用Sybase中的SQL实现几何乘法。我的百分比范围从-100到+无穷大。由于Sybase中没有产品聚合,因此我使用了exp和log方法的近似值。没有为log(0)定义日志,所以我必须捕获值-100。

我想做类似的事情:

SELECT KEY, IF VALUE <= EXP(SUM(LOG(CASE WHEN VALUE <= -100 THEN 0 ELSE 1+VALUE / 100 END)))
FROM TABLE 
GROUP BY KEY

查询部分CASE WHEN VALUE <= -100 THEN 0 ELSE 1+VALUE / 100 END在函数外部有效,但不在其出现的日志函数内部。

错误消息:关键字FROM附近的语法不正确。

知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

我应该在这之前喝咖啡...感谢您的帮助。

  1. IF VALUE <=不应该在那里。这是来自我做过的旧测试而忘记删除它。
  2. LOG()在错误的地方。
  3. 这是正确答案:

    SELECT KEY, EXP(SUM(CASE WHEN VALUE <= -100 THEN 0 ELSE LOG(1+VALUE / 100) END))
    FROM TABLE 
    GROUP BY KEY
    

    编辑:实际上,由于价值是百分比,因此以最终结果获得最终结果可能更为逻辑:

    SELECT KEY, (EXP(SUM(CASE WHEN VALUE <= -100 THEN 0 ELSE LOG(1+VALUE / 100) END)) - 1) * 100
    FROM TABLE 
    GROUP BY KEY