У меня есть следующая таблица.Мне нужно получить ROW_NUMBER для 'pk_ia = 3' и 'pk_ib = 1' и указать это как смещение, чтобы получить строки 'c' и 'd'.
Table: items
|pk_ia|pk_ib|data|
|1 |1 |a |
|2 |1 |b |
|3 |1 |c |
|4 |1 |d |
Чтобы получитьrow_number, я пытаюсь дать псевдоним для смещения, например OFFSET some_alias
.Я получаю следующую ошибку:
ERROR: column "o" does not exist
LINE 1: ...-1) AS o from tblitem ORDER BY pk_iPlu ASC OFFSET o LIMIT 10...
^
********** Error **********
ERROR: column "o" does not exist
SQL state: 42703
Character: 266
Мой запрос:
SELECT pk_ia, (SELECT row FROM (SELECT pk_ia, ROW_NUMBER () OVER (ORDER BY pk_ia) AS row
FROM items where pk_ib=1) AS row_number
where pk_ia=(select min(pk_ia) from items where pk_ia >= 3)-1)
AS o from items where pk_ib=1 ORDER BY pk_ia ASC OFFSET o LIMIT 10;
Ожидается: я хочу что-то вместе со смещением 3. т. Е. 2
Table: items
|pk_ia|offset|
|3 |2 |
|4 |2 |
ПРИМЕЧАНИЕ. Чтобы получить следующую ближайшую запись, если запрошенная переменная pk_ia отсутствует, я использовал
pk_ia=(select min(pk_ia) from tblitem where pk_ia >= 3)
Хотя для следующих выборок требуется результат, но здесь смещение дается как 2, что не предназначено,
SELECT pk_ia, (SELECT row FROM (SELECT pk_ia, ROW_NUMBER () OVER (ORDER BY pk_ia) AS row
FROM items where pk_ib=1) AS row_number
where pk_ia=(select min(pk_ia) from items where pk_ia >= 3)-1)
AS o from items where pk_ib=1 ORDER BY pk_ia ASC OFFSET 2 LIMIT 10;
Результаты:
Table: items
|pk_ia|offset|
|3 |2 |
|4 |2 |
Как получить это с помощью псевдонима?