在firebird 1中使用group by时出错

时间:2012-05-10 05:30:56

标签: sql firebird

我正在尝试运行以下查询,但它无效!

select extract(month from flight_date_time) mnt from T_PEREXOD where extract( year from flight_date_time)='2012'
group by mnt 
order by mnt

我也试过了次要的

select mnt from (select extract(month from flight_date_time) AS mnt from T_PEREXOD)
group by mnt
order by mnt

但它会弹出一个错误 令牌无效。

Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 1, char 18.
select.

这是Firebird版本1的问题吗?

如果没有任何视图,程序,计算字段等进行灌浆工作怎么样?因为我不想改变那个数据库!

1 个答案:

答案 0 :(得分:3)

首先 - Extract返回一个smallint或十进制值,这样你的clousure就错了。

第二 - 从1.5上起支持子查询

尝试在第一个查询中更改SELECT EXTRACT(...) as mnt(添加为)或尝试使用列索引分组,如

  

GROUP BY 1

     

ORDER BY 1

Firebird 1.0 sql一致性是你可能会感兴趣的,但这是我能找到的唯一一个: http://www.firebirdsql.org/en/sql-conformance/

如果您有任何机会,我建议您更新到最新版本的FB