任何人都可以解释为什么这样工作:
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'
这与LibreOffice 6.1.3一起使用Firebird版本
答案 0 :(得分:2)
您不能在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隐式连接更易读。