SELECT AS 上未知的 Firebird 专栏

Firebird column unknown on SELECT AS

我有 table 个通话及其时长:

+----+---------------+---------------+---------------+
| ID | CALLER_NUMBER | CALLEE_NUMBER | CALL_DURATION |
+----+---------------+---------------+---------------+
|  0 | 1xxx0001020   | 1xxx3024414   |          0.30 |
|  1 | 1xxx1002030   | 1xxx0303240   |        134.24 |
|  2 | 1xxx2003040   | 1xxx0324220   |        330.00 |
|  3 | 1xxx3004050   | 1xxx5829420   |        104.00 |
+----+---------------+---------------+---------------+

我想 select 所有呼叫总时长超过 500 秒的号码。我的查询使用 SELECT AS 重命名 SUM(...) 字段,以便我可以在 HAVING 子句中引用它:

SELECT CALLER_NUMBER, SUM(CALL_DURATION) AS TOTAL
FROM CALLS
GROUP BY CALLER_NUMBER
HAVING TOTAL > 500

当我在 Firebird SQL 中 运行 此查询时,出现以下错误:

Message: isc_dsql_prepare failed

SQL Message : -206
can't format message 13:794 -- message file not found

Engine Code    : 335544569
Engine Message :
Dynamic SQL Error
SQL error code = -206
Column unknown
TOTAL
At line 4, column 8

您不能在 having 子句中使用 alias

您应该在 having 子句中使用 sum,如下所示:

SELECT CALLER_NUMBER, SUM(CALL_DURATION) AS TOTAL
FROM CALLS
GROUP BY CALLER_NUMBER
HAVING SUM(CALL_DURATION) > 500