Złożone zapytanie

Odpowiedz Nowy wątek
2006-08-02 13:21
Piotrek77
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

Pozostało 580 znaków

2006-08-02 13:31
0

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


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2006-08-02 13:37
Piotrek77
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.

Pozostało 580 znaków

2006-08-02 13:54
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??


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2006-08-02 14:01
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


Dwie zasady gwarantujące sukces:
1. Nigdy nie mów nikomu wszystkiego<span style="color: white">

Pozostało 580 znaków

2006-08-02 14:10
Piotrek77
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 |

Pozostało 580 znaków

2006-08-02 14:20
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?


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2006-08-02 14:23
Piotrek77
0

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

Pozostało 580 znaków

2006-08-02 14:33
Piotrek77
0

Dodam jeszcze ze zapytanie jest do paradoxa

Pozostało 580 znaków

2006-08-02 14:46
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


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-08-02 14:54
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


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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