Witam,
Wrzucę na początek przykładową tabelę:

CREATE TABLE O_test (
client_id INTEGER
,order_id VARCHAR(40)
,order_date DATE);

INSERT INTO O_test VALUES
('1', '34234', '2018-02-01'),
('1', '43534', '2018-02-02'),
('1', '45676', '2018-02-03'),
('1', '56543', '2018-02-04');

Potrzebuję przypisać do każdego wiersza rosnąco numery gdzie najstarsza data to 1 a najnowsza w tym przypadku 4 a następnie nazwać w kolejnej kolumnie najniższy numer first, najwyższy last i wszystkie środkowe middle:
SELECT *
,rank() OVER(PARTITION BY client_id ORDER BY order_date ASC) as ranking
FROM o_test
Teraz jak przypisać w kolejnej kolumnie first, middle i last? Nie wchodzi w grę CASE WHEN ranking = 1 then 'first'. Jeżeli to możliwe to zależy mi, żeby nie tworzyć kolejnych podzapytań dla first, middle i last.

Pozdrawiam
R0bson