У меня есть эта таблица:
CREATE TABLE mytable
(
id integer NOT NULL,
rank integer,
col1 text,
col2 text,
CONSTRAINT mytable_pk PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);
INSERT INTO mytable(id, rank, col1, col2) VALUES (1, 1, 'c', 'c');
INSERT INTO mytable(id, rank, col1, col2) VALUES (2, 2, 'a', 'a');
INSERT INTO mytable(id, rank, col1, col2) VALUES (3, 2, 'b', NULL);
INSERT INTO mytable(id, rank, col1, col2) VALUES (4, 3, 'c', 'c');
Мне нужно сделать запрос в postgresql 9.0, который "объединит" две строки с одинаковым значением "rank" в одну строку, с этим правилом: for col1 и col2, выберите значения с более высоким значением "id", но когда это значение равно NULL, выберите другое значение (примечание: строки с одинаковым значением "rank" не могут быть больше 2)
ожидаемый результат:
rank col1 col2
------------------------------
1 c c
2 b a
3 c c