Я пытаюсь реализовать геометрическое умножение с использованием SQL в Sybase. У меня процент от -100 до + бесконечности. Поскольку в Sybase нет агрегации продуктов, я использую аппроксимацию с помощью методов exp и log. Журнал не определен для log (0), поэтому мне нужно поймать значение -100.Условие внутри вызова функции в Sybase SQL
Я хотел бы сделать что-то похожее на это:
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
.
Любая идея, как исправить это?
Вы говорите, что log (0) не определен, а затем попытайтесь вычислить его, когда VALUE <= -100'. Это намеренно? – Andy
fwiw: похоже, вы выбираете два значения - KEY, за которым следует искаженный/неполный оператор if. У меня нет доступа к серверу Sybase (это IQ или ASE, который вы используете btw?) Для тестирования, но если CASE не работает внутри LOG(), инвертируйте логику и поместите отдельные LOG() s внутри двух ветвей случай. –
Если вы пытаетесь присвоить значение VALUE <= -100', то вы должны сделать оператор 'CASE' return 1, потому что' log (1) = 0' – Andy