Моя проблема представлена следующим запросом:
SELECT
b.row_id, b.x, b.y, b.something,
(SELECT a.x FROM my_table a WHERE a.row_id = (b.row_id - 1), a.something != 42 ) AS source_x,
(SELECT a.y FROM my_table a WHERE a.row_id = (b.row_id - 1), a.something != 42 ) AS source_y
FROM
my_table b
Я дважды использую один и тот же оператор подзапроса для получения source_x
и source_y
.
Вот почему мне интересно, возможно ли сделать это, используя только один подзапрос?
Потому что, как только я запускаю этот запрос на моих реальных данных (миллионы строк), кажется, что он никогда не завершится и займет несколько часов, если не дней (мое соединение прерывается до конца).
Я использую PostgreSQL 8.4