Złożone zapytanie

0

Witam,

Mam problem z napisaniem takiego zapytania. Otóż mam tabelę z nazwą kontrahenta,terminem płatności i kwotą do zapłaty. Potrzebuję otrzymać w wyniku nazwę kontrahenta, w drugiej kolumnie kwota do zapłaty w następnej ( i tu sie zaczyna problem) kwota do zaplaty w jakims przedziale czasowym (np. najblizszy tydzien), III kolumna następny przedział czasowy i ostatnia kolumna pozostałe płatności czyli to co się nie kwalifikuję do dwóch poprzednich kolumn.

Troche chaotycznie to wytłumaczyłem ale mam nadzieje że coś zrozumieliście.

Tak wyglada tabela:


kontrahent | terplatnosci | dozaplaty


A wynik chciałbym otrzymać taki:


kontrahent | Do zaplaty | do zaplaty w przyszlym tygodniu | Do zaplaty za 2 tyg | Reszta

0

a niby na jakiej zasadzie ma to być rozdzielone na
do zaplaty w przyszlym tygodniu, Do zaplaty za 2 tyg, Reszta
???? Losowo?

0

Pierwsza data oczywiście będzie wcześniej wklepywana z klawiatury, to nie jest problem. Problemem jest dla mnie to że potrafie zrobić każde z tych zapytań, natomiast nie potrafię tego połączyć w jedno.

0

nie rozumiemy się - masz dane
kontrahent | terplatnosci | dozaplaty
a z tego chcesz wyciągnąć
kontrahent | Do zaplaty | do zaplaty w przyszlym tygodniu | Do zaplaty za 2 tyg | Reszta
skąd ma program (zapytanie) wiedzieć jak DoZapłaty rozbić na do zaplaty w przyszlym tygodniu, Do zaplaty za 2 tyg, Reszta??

0

no ja myślę że to jest:

kontrahent | termin | dozapłaty

misiek 15 listopad 15 zeta
misiek 20 listopad 20 zeta
misiek 30 listopad 5 zeta
zenek 1 grudnia pińcet złoty
misiek 31 luty 4,99 ojro

i na zapytanie "misiek" ma zwrócić:

kontrahent | Do zaplaty | do zaplaty pierwszy termin | Do zaplaty w następnym terminie | Reszta
misiek 59.61 15 zeta 20 zeta 24.61 złych

ale to chyba jakieś dziwne podejście i do takich rzeczy to już skrypty, bo nie wiem po co ci takie zapytanie i przy okazji jak chciałbyś z niego korzystać ...

w przykładzie wystąpili: zenek, misiek, kurs ojro z wczoraj i 31 luty

0

Widocznie źle wytłumaczyłem o co mi chodzi. Zrobię to na przykładzie. Mam taką tabelę:

kontrahent | terplatnosci | dozaplaty

  1. Firma X 15-08-2006 15000
  2. Firma Y 24-08-2006 20000
  3. Firma Z 01-09-2006 30000
  4. Firma XY 15-11-2006 100000

I teraz w wyniku zapytania chciałbym otrzymać taki wynik:


Kontrahent | Do zapłaty | 1 tydzień | 2 tydzień | 3 tydzień | Pozostałe |

Firma X | 15000 | 15000 | 0 | 0 | 0 |
Firma Y | 20000 | 0 | 20000 | 0 | 0 |
Firma Z | 30000 | 0 | 0 | 30000 | 0 |
Firma XY | 100000 | 0 | 0 | 0| | 100000 |

0

widzisz Adamo jednak nie tak jak myślałeś :)
to jeszcze jedno pytanie - czy ilość "tygodni" jest stała czy nie, tzn czy zawsze będzie za 1 tydzień, 2 tygodnie, 3 tygodnie, inne czy raz może być za 1 tydzień, inne a kiedy indziej za 1 tydzień, za dwa, inne?

0

Tak ilość tygodni jest zawsze stała czyli za tydzień za 2 i za 3.

0

Dodam jeszcze ze zapytanie jest do paradoxa

0

Nie znam paradoxa, ale w mssqlu ja bym zrobil to tak:

select Kontrahent, sum(dozaplaty), sum(select dozaplaty where datediff(w,getdate(), terplatnosci)=1 and kontrahent=tab.kontrahent), sum(select dozaplaty where datediff(w,getdate(), terplatnosci)=2 and kontrahent=tab.kontrahent), sum(select dozaplaty where datediff(w,getdate(), terplatnosci)=3 and kontrahent=tab.kontrahent), sum(select dozaplaty where datediff(w,getdate(), terplatnosci)>3 and kontrahent=tab.kontrahent) from tabela tab group by kontrahent

Pisane z palca i moga byc male bledy, ale idea jest chyba jasna. Moze sie przyda.

pozdrawiam
johny

0

jeśli chodzi o paradoxa to niestety ale nie zrobisz tego SQLem a jedynie po stronie klienta - paradox ma zbyt ubogą składnię SQLa

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