[Oracle] Problem z dołączeniem widoku do zapytania

0

Hej,

Mam pewien problem i nie wiem jak coś zapisać.

Mam już widok który generuję historię produktów, historia ta ma datę MODIFICATION_DATE i dla nie ustawiłem START_DATE i END_DATE tak że START_DATE to data MODIFICATION_DATE a END_DATE to data z kolejnego rekordu (jęsli null to 99/12/12) - dzięki temu mogę oglądać stan na dzien bo robię joina dla stanu na dzień BETWEEN START_DATE and END_DATE.
Czyli testując joina mogę taki warunek zrobić:

 (to_date('18/12/31','YY/MM/DD') >= START_DATE and to_date('18/12/31','YY/MM/DD')< END_DATE)

Działa to ok.

Teraz chcę dorzucić wersje produktu - oglądam dane dla 18/12/31 - 31.12.2018

Dla przykładu mam zapytanie z wersjami (również mają start i end date):

PRODUKT || VERSION || START_DATE || END_DATE

A || Wersja globalna || 19/01/01 || 99/12/12

Czyli powyższa wersja została wpisana dopiero od 19/01/01, a dla produktu wcześniej powinien być null -- czyli oglądając stan na 18/12/31 potrzebuję widzieć null.

Podpinam do produktów LEFT_JOIN po kolumnie PRODUKT - od razu dla przykładu pokazuję mi powyższy przykład, jednak teraz chcę dodać warunek (lub pozniej joina do tabeli z czasem) - tak żeby wybrac dzień 18/12/31 - ten rekord był, ale miał nulle.

Utworzyłem taki warunek na wstępnie:

(to_date('18/12/31','YY/MM/DD') >= VER_START_DATE and to_date('18/12/31','YY/MM/DD')< VER_END_DATE)

Powyższy warunek wycina powyższy przykład tak, że rekord z produktem znika - co jest w sumie zrozumiałem bo nie ma danych dla daty mniejsze od 19/01/01
Pytanie moje: czy da się zmodyfikować warunek tak, żeby jakoś pokazać NULLE jak nie istnieje rekord? Typu sprawdź powyższy warunek jeżeli jest to pokaż rekord jeżeli nie to NULLE.
Piszę to w warunkach where bo później chcę do tego łącznego zapytania dopiąć kolumnę DATY i wpiąć w te dwa warunki tak że jak wybiorę na końcu datę 2018.12.31 to mi pokaże stan an ten dzień, a jak nie ma danych to nulle.

0

nic nie rozumiem... Dlaczego uważasz, że długi i niezrozumiały opis może zastąpić kawałek problematycznego kodu?

0

Podaj polecenie tworzące tabelę, parę insertów i zapytanie, które przygotowałeś.
Poza tym używaj formatu daty, gdzie rok jest czterocyfrowy - to co piszesz jest nieczytelne.

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