Firebird SELECT中的计算结果

时间:2018-11-13 10:42:14

标签: sql firebird libreoffice-base

任何人都可以解释为什么这样工作:

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版本

1 个答案:

答案 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隐式连接更易读。