Я получаю синтаксическую ошибку с этой командой SQL в Postgres, но похоже, что она соответствует синтаксису команды, указанному в документации SELECT
select *,
row_number() over w
from units
left outer join leases
window w AS (partition by units.id order by leases.start desc)
Насколько далеко как я вижу, это соответствует синтаксису, который говорит, что я могу написать любой оператор SQL в форме:
SELECT *
from (table joins)
WINDOW window_name AS (window_definition)
, и все же SQL говорит мне, что есть ошибка между leases
и window
. В чем ошибка? Почему я неправильно читаю документацию?
Вот ошибка:
2020-03-27 23:02:11.644 PDT [47717] ERROR: syntax error at or near "WINDOW" at character 66
2020-03-27 23:02:11.644 PDT [47717] STATEMENT: select *, row_number() over w from units left outer join leases WINDOW w AS (partition by units.id order by leases.start desc)
ERROR: syntax error at or near "WINDOW"
LINE 1: ...umber() over w from units left outer join leases WINDOW w A...
^
Чтобы прояснить мой вопрос, я отредактировал его, чтобы фактически добавить функцию окна в список SELECT, хотя это не является необходимым согласно Postgresql SQL спе c. В любом случае, добавление функции не заботится о синтаксической ошибке; оно остается на том же месте.