[Delphi,Mysql] Analiza danych w bazie

0

Mam taki układ w bazie:
Konto DataPoczatkuUmowy DataKoncaUmowy DlugoscUmowy Okres
100 2005-09-02 2005-10-01 1 10
101 2005-04-12 2005-10-11 6 3

gdzie DługoscUmowy oznacza na ile miesięcy umowa jest zawarta, a okres oznacza ile razy umowa była przedłużana na kolejne okresy. Na podstawie tych danych chciałbym uzyskac informacje w trochę innym układzie, bardziej szczegółowe, w ten sposób od początku zawarcia umowy:
Konto DataPoczatkuUmowy DataKoncaUmowy DlugoscUmowy
100 2004-12-02 2005-01-01 1
100 2005-01-02 2005-02-01 1
100 2005-02-02 2005-03-01 1
100 2005-03-02 2005-04-01 1
100 2005-04-02 2005-05-01 1
100 2005-05-02 2005-06-01 1
100 2005-06-02 2005-07-01 1
100 2005-07-02 2005-08-01 1
100 2005-08-02 2005-09-01 1
100 2005-09-02 2005-10-01 1
101 2004-10-12 2005-04-11 6
101 2005-04-12 2005-10-11 6
101 2005-10-12 2006-04-11 6

czyli chodzi o szczegółowe rozbicie jak wyglądały poszczególne umowy od początku roku. Ma ktoś pomysł jak to zrobić?

0
  1. Co to za baza?
  2. możliwości widzę dwie (nie na wszystkich bazach)
    a) pobranie danych do klienta i tam "ręczne" rozbicie i wrzucenie wyników do StringGrida
    b) rozbicie po stronie serwera w procedurze składowanej (to np. na MySQLu nie przejdzie, bo ten nie ma procedur składowanych)

Wybierz któryś sposób to pomyślimy dalej, albo poczekaj na kolejne propozycje

0

Potrzebuję odtworzyć właśnie całą historie umów, tzn jak poszczególne umowy wyglądały w poszczególnych okresach. Robię to wszystko na MySQL

0

to jeszcze jedno pytanko dla pewności
W bazie nigdzie nie masz zapisanej histori, a jedyne wpisy dotyczące tych operacji wyglądają tak:

Konto DataPoczatkuUmowy DataKoncaUmowy DlugoscUmowy Okres
100 2005-09-02 2005-10-01 1 10
101 2005-04-12 2005-10-11 6 3

??

0

Pole okres oznacza ile razy dana umowa była przedłużana, jest to więc historia umowy. Tak więc jak podałem już na samym początku:
100 2005-09-02 2005-10-01 1 10

oznacza, że umowa była przedłużana 10 razy, a więc datami wyglądała tak:
100 2005-09-02 2005-10-01 <= tu w okresie 10
100 2005-08-02 2005-09-01 <= tu w okresie 9
100 2005-07-02 2005-08-01 <= tu w okresie 8
100 2005-06-02 2005-07-01 <= tu w okresie 7
100 2005-05-02 2005-06-01 <= tu w okresie 6
100 2005-04-02 2005-05-01 <= tu w okresie 5
100 2005-03-02 2005-04-01 <= tu w okresie 4
100 2005-02-02 2005-03-01 <= tu w okresie 3
100 2005-01-02 2005-02-01 <= tu w okresie 2
100 2004-12-02 2005-01-01 <= tu założona po raz pierwszy
Właśnie o taki rozkład mi chodzi.

0

to pozostaje Ci pobrać rekord dla konkretnej umowy (albo umów), a potem w pętli obliczać date konkretnej operacji i wpisywać to do StringGrida

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