2016-09-21 3 views
0

Я хочу осуществить это уравнение в SQL:Как написать уравнение в sql?

f(x) = f(a) + (f(b)-f(a)) * (x-a)/(b-a) 

мой вклад следующим образом:

enter image description here

То, что я попытался было:

select ((select CosValue from CosineTable where Angle=70) + 
     ((select CosValue from CosineTable where Angle=75) - 
     (select CosValue from CosineTable where Angle=70)) * (73-70)/(75-70) 
from CosineTable; 

Он показывает мне синтаксис ошибка.

+0

вам нужно возвращать результат для каждой строки, или вы смотрите на только определенная строка? – Takarii

+0

Какая СУБД вы используете? –

+0

Я должен привести только к одному значению – user3740504

ответ

0

Вы отсутствует один закрывающую скобку )

Попробуйте это:

SELECT ((SELECT CosValue 
     FROM CosineTable 
     WHERE Angle = 70 
    ) + ((SELECT CosValue 
       FROM  CosineTable 
       WHERE  Angle = 75 
      ) - (SELECT CosValue 
        FROM  CosineTable 
        WHERE  Angle = 70 
       )) * (73 - 70)/(75 - 70)) 
FROM CosineTable; 

Но это работает только, если вы всегда получите одно значение обратно в ваших подзапросов.

+0

Спасибо. Я запустил предложенное редактирование, но ничего не получил взамен, несмотря на безопасный запрос. – user3740504

0

Предполагая, что есть только одна строка на угол в вашей таблице, запрос можно упростить с помощью перекрестного соединения:

select a70.cosvalue + (a75.cosvalue - a70.cosvalue) * (73-70)/(75-70)) 
from CosineTable a70 
    cross join cosinetable a75 
where a70.angle = 70 
    and a75.angle = 75; 
+0

a70.cosvalue + (a75.cosvalue - a70.cosvalue) * (73-70)/(75-70) – Serg

+0

@serg: спасибо, исправлено –

+0

Я не думаю, что мне нужны кросс-соединения и попытаюсь это сделать, используя select, from и where only – user3740504

Смежные вопросы