Расчетный результат в Firebird SELECT - PullRequest
0 голосов
/ 13 ноября 2018

Может кто-нибудь объяснить, почему это работает:

Select C1, C2, C1 + C2 as C3
from V1,V2
where C2 > 0

и

Select C1, C2, C1 + C2 as C3
from V1,V2
where C3 > 0

выдает следующую ошибку:

*Dynamic SQL Error
*SQL error code = -206
*Column unknown
*C3
*At line 1, column 53
caused by
'isc_dsql_prepare'

Это использует версию Firebird сLibreOffice 6.1.3

1 Ответ

0 голосов
/ 13 ноября 2018

Нельзя использовать псевдонимы из списка столбцов SELECT в пункте WHERE: необходимо использовать исходный столбец;список столбцов выбора оценивается после where.Другими словами, вам нужно использовать where C1 + C2 > 0

В качестве альтернативы вам нужно использовать подзапрос:

select * 
from (Select C1, C2, C1 + C2 as C3 from V1,V2) a
where C3 > 0 

И я настоятельно рекомендую вам начать использовать SQL-92явные объединения, поскольку они более читабельны, чем неявные объединения SQL-89.

...