PostgreSQL wstawienie domyślnej wartości w zapytaniu w przypadku nie znalezienia wartości

0

Witam.
Mam tabelę w PostgreSQL 9.1:

CREATE SEQUENCE cena_cena_id_seq;

CREATE TABLE cena (
                cena_id BIGINT NOT NULL DEFAULT nextval('cena_cena_id_seq'),
                data DATE NOT NULL,
                cena NUMERIC(2) NOT NULL,
                produkt_id BIGINT NOT NULL,
                CONSTRAINT cena_id PRIMARY KEY (cena_id)
);

Kolumna data oznacza początek obowiązywania ceny. Koniec obowiązywania ceny to wartość początkowa następnej daty, dla tego samego produktu.

Wprowadziłem następujące dane testowe:

INSERT INTO cena (data, cena, produkt_id) VALUES ('1995-12-12', 12.00, 0);
INSERT INTO cena (data, cena, produkt_id) VALUES ('1996-12-12', 13.00, 0);

Chcę napisać zapytanie, które wyświetli wszystkie ceny podając początek i koniec daty obowiązywania ceny. W przypadku ostatniej daty obowiązywania chcę wyświetlić datę '9999-10-10'.

Stworzyłem następujące zapytanie:

SELECT c.cena, c.produkt_id AS produkt, c.data AS dataod, (SELECT cc.data FROM cena cc WHERE c.produkt_id = cc.produkt_id AND cc.data > c.data ORDER BY data LIMIT 1) AS datado FROM cena c;

Otrzymałem następujący rezulatat:
12;0;"1995-12-12";"1996-12-12"
13;0;"1996-12-12";"2000-12-14"
18;0;"2000-12-14";""

Co poprawić, aby dla ostatniej daty otrzymać '9999-10-10'?

Pozdrawiam,

1

Lepiej użyć stałej - Infinity.

SELECT c.cena, c.produkt_id AS produkt, c.DATA AS dataod, Colesce((SELECT cc.DATA FROM cena cc WHERE c.produkt_id = cc.produkt_id AND cc.DATA > c.DATA ORDER BY DATA LIMIT 1), 'Infinity')::DATE AS datado FROM cena c;
0

Dzięki. :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1