warunek badania (być moze CASE) - oracle sql

0

cześć,
mam do rozwiązania pewien problem. w tabeli mam daną liczbową (możliwe wartości od jakiejś cyfry do jakiejś cyfry), w drugiej kolumnie mam datę pewnego zdarzenia oraz ostatnią kolumnę z datą na którą dane są w tabeli wystawione (zawsze pierwszy dzień miesiąca - każdy wiersz dopisywany jest wlasnie co miesiąc). oczywiście w tabeli znajduje się jakies ID wiersza. I teraz potrzebuję dodatkową kolumnę która będzie zawierała dane na podstawie tego jak wartość liczbowa zmienia się wraz z każdym kolejnym miesiącem (wierszem w mojej tabeli). czyli jeżeli wartość w kolumnie z liczbami w lutym była 8 a w marcu 10 to ta kolumna musi przyjmować wartość 'z 8 do 10' przy czym wartość 8 badana jest na datę jaka istnieje w kolumnie z datą zdarzenia. poniżej załacznik z tabelą która to odrazuje jakie wartości nowa kolumna powinna zawierac. oczywiście to powinien być jakiś automat ktory wyznaczy tą wartość nowej kolumny

może ktoś jest w stanie pomóc jak takie coś zrealizować?

0

Najproście będzie użyć LAG

select 
  "data"
  ,"liczba"
  ,case 
      when COALESCE(LAG("liczba",1) over (order by "data"),"liczba") = "liczba"
      then 'Bez zmian'
      else "liczba" || '/' || LAG("liczba",1) over (order by "data")
      end as kol
FROM Tab1;

http://sqlfiddle.com/#!4/18c51/17

0

Panczo dzięki - czy da się CASem obsłużyć taki przypadek ale żeby tworzył nową kolumnę ale z pewnym warunkiem ktory zaraz opiszę. Bo w Twoim rozwiązaniu zawsze cofasz się jeden wiersz do góry i sprawdzasz czy wartość liczby jest inna niż w bieżącym wierszu i w zależności od tego wpisujesz określoną wartość, ale ja musze niestety skomplikować sprawę bo to do której wartości porównuje się bieżący wiersz uzależnione jest od kolumny "data_zdarzenia" a więc nie zawsze chce się cofać jeden wiersz do góry ale chce się cofać tyle wierszy do góry aby natrafić na najnowszą datę w kolumnie "data_zdarzenia" i z wiersza gdzie jest ona najbliższa aktualnej pobierać wartość LICZBA (i jdenoczesnie pozostałe warunki musza być zachowane) i ją później wpisywać do nowej kolumny. Czy takie coś da się obsluzyc CASEm? czy może jakies inne techniki należy uzyc (pytanie jakiej?). Będę Ci wdzięczny za pomoc

0

Marcin.Miga ale czy LAGiem i CASEm jestem w stanie taką opisaną przeze mnie sytuację objąć? tak żebym jak wspomniałem cofał się różną liczbę wierszy zaleznie od daty?

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