【发布时间】:2012-09-21 08:39:09
【问题描述】:
我写了一个需要重写的 SQL 查询。 基本上,它会做这样的事情:
select log_number,
code_id,
code_name,
...
buyer_id,
...
rank() over (
partition by code_id, buyer_id
order by (date_trunc('second',cdr.dateconso) - date_trunc('second',log.datecrea)) asc
) as ranking,
from ...
join ... on ...
left join ... on ...
join ...
where ...
它与最新版本的 PostgreSQL 完美配合。
但是,下面的指令:
rank() over (
partition by code.blg_promocode_keyid, cdr.tph_wp_account_buyer_keyid
order by (date_trunc('second',cdr.dateconso) - date_trunc('second',log.datecrea)) asc
) as ranking,
... 使用当前安装的 PostgreSQL 版本生成语法错误,我必须找到绕过它的解决方案,但我不知道。
错误:查询失败:错误:在“超过”第 21 行或附近出现语法错误: rank() over (partition by ...
【问题讨论】:
-
和“当前安装的postgreSQL”是什么?如果它是 8.3 或更高版本,则不支持窗口功能,您需要 8.4 或更高版本。否则,请显示整个未编辑的 SQL 语句,因为语法错误可能更早。
-
您写了关于“PostgreSQL 的最新版本”的文章,但仍然对正在运行的版本保密?你在嘲笑我们吗?
-
我在 pg 9.0 上编写并运行我的查询,而另一台机器运行不支持窗口功能的 8.2。很抱歉给您延迟了这些信息。
-
8.2 不受支持。您真的应该将该机器升级到当前版本。
-
完全同意,即使我不能这样做,因为升级 postgres 不是 我的 工作(但我绝对要求它!)
标签: sql postgresql syntax-error window-functions