Расчетный результат в Firebird SELECT
Может кто-нибудь объяснить, почему это работает:
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 ответ
Решение
Вы не можете использовать псевдонимы из SELECT
список столбцов в WHERE
-clause: вам нужно использовать оригинальный столбец; список столбцов выбора оценивается после 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.