Forum Użytkownikow Subiekt GT

InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty przez: peiro w Marzec 07, 2019, 10:57:03

Tytuł: Zestawienia sql Fz
Wiadomość wysłana przez: peiro w Marzec 07, 2019, 10:57:03
Witam, kolegów napisałem zestawienie

select

 kh_Symbol as 'Kontrahent'
, case when dok_Podtyp = 5 then dok_DataWyst end as 'Data fakt. zal. KOŃCOWEJ'
, case when dok_Podtyp = 5 then dok_NrPelny end as 'Nr faktury zal. KOŃCOWEJ'
, case when dok_Podtyp = 5 then dok_WartBrutto end as 'Wart. brutto faktury zal. KOŃCOWEJ'
, case when dok_Podtyp = 4 then dok_DataWyst end as 'Data fakt. Zal. CZĄSTKOWEJ'
, case when dok_Podtyp = 4 then dok_NrPelny end as 'Nr faktury zal. CZĄSTKOWEJ'
, case when dok_Podtyp = 4 then dok_WartBrutto end as 'Wart. brutto faktury zal. CZĄSTKOWEJ'

from dok__Dokument

Join kh__kontrahent ON dok_PlatnikId = kh_id


where dok_typ=2 and dok_Podtyp in (4,5)
--and (dok_DataWyst BETWEEN {DR:data dokumentu: POPRZEDNI_MIESIAC})
order by  kh_Symbol

i działa ale rozbija mi na 2 wiersze podsumowanie a ja chciałbym żeby fv zaliczkowe pokazywały się po jednej stronie a powiązane do tego dokumentu po 2. Jak można to uzyskać?
Tytuł: Odp: Zestawienia sql Fz
Wiadomość wysłana przez: birds22 w Marzec 07, 2019, 10:59:08
A jeżeli będzie więcej niż 1 faktura cząstkowa ?
Tytuł: Odp: Zestawienia sql Fz
Wiadomość wysłana przez: yemet w Marzec 07, 2019, 11:04:08
No generalnie jak chcesz, żeby informacje z jednego wiersza w tabeli, jakim jest nagłówek faktury cząstkowej , pojawiły się w jednym wierszu razem z innym wierszem z tej samej lub z innej tabeli (a takim wierszem jest nagłówek zaliczki końcowej), to musisz te informacje jakość powiązać :)  W SQL-u do tego służy między innymi JOIN.

Plus trzeba jeszcze poradzić sobie z tym to co napisał @bird22 :)
Tytuł: Odp: Zestawienia sql Fz
Wiadomość wysłana przez: peiro w Marzec 07, 2019, 11:15:36
Jeżeli jest więcej fzc

np
fzk    fzc
1         1
1         2
1         3
1         4
1         5
Tytuł: Odp: Zestawienia sql Fz
Wiadomość wysłana przez: birds22 w Marzec 07, 2019, 11:22:09
Tak jak napisał yemet musisz mieć dwie tabele dok__dokument - jedną dla FZK, drugą dla FZC aby powiązać ze sobą te faktury w ten sposób o którym piszesz.
Tytuł: Odp: Zestawienia sql Fz
Wiadomość wysłana przez: yemet w Marzec 07, 2019, 11:28:31
Jeżeli jest więcej fzc

np
fzk    fzc
1         1
1         2
1         3
1         4
1         5

Zakładam, że wystawiasz te cząstkowe do ZK zaliczkowego? Jak tak to masz punkt zaczepienia. Popatrz sobie na kolumnę dok_DoDokId w fakturach zaliczkowych.
Tytuł: Odp: Zestawienia sql Fz
Wiadomość wysłana przez: peiro w Marzec 08, 2019, 10:45:28
Ok dzięki za info
możecie zerknąć czy tak jest ok?

select

kh_Symbol as 'Kontrahent'
, case when d1.dok_Podtyp = 5 then d1.dok_DataWyst end as 'Data fakt. zal. KOŃCOWEJ'
, case when d1.dok_Podtyp = 5 then d1.dok_NrPelny end as 'Nr faktury zal. KOŃCOWEJ'
, case when d1.dok_Podtyp = 5 then d1.dok_WartBrutto end as 'Wart. brutto faktury zal. KOŃCOWEJ'
, case when d2.dok_Podtyp = 4 then d2.dok_DataWyst end as 'Data fakt. Zal. CZĄSTKOWEJ'
, case when d2.dok_Podtyp = 4 then d2.dok_NrPelny end as 'Nr faktury zal. CZĄSTKOWEJ'
, case when d2.dok_Podtyp = 4 then d2.dok_WartBrutto end as 'Wart. brutto faktury zal. CZĄSTKOWEJ'

--,*

from dok__Dokument as d1

Join kh__kontrahent ON d1.dok_PlatnikId = kh_id
left join dok__Dokument as d2 on d1.dok_DoDokId = d2.dok_DoDokId

where d1.dok_typ=2 and d1.dok_Podtyp = 5 and d2.dok_Podtyp = 4
--and (dok_DataWyst BETWEEN {DR:data dokumentu: POPRZEDNI_MIESIAC})

order by  kh_Symbol desc
Tytuł: Odp: Zestawienia sql Fz
Wiadomość wysłana przez: yemet w Marzec 08, 2019, 10:55:53
Nie jest bo dalej masz te CASE'y nieszczęsne i masz źle zdefiniowany warunek ON w joinie  dla d2 i nieprawidłowe warunki w WHERE.

I nie wziąłeś w ogóle pod uwagę tego o czym pisaliśmy z @candy - co gdy będzie więcej niż jednak faktura zaliczkowa do zamówienia?
Tytuł: Odp: Zestawienia sql Fz
Wiadomość wysłana przez: yemet w Marzec 08, 2019, 11:07:10
Załóż sobie podmiot demo, zrób sobie testowe zamówienie zaliczkowe, wystaw do niej na początek tylko jedną zaliczkę cząstkową na całą wartość zamówienia, zrób do tego fv końcową. Napisz selecta tylko na te 3 dokumenty po ich numerach na dok_nrpelny i obejrzyj sobie w nich pola dok_id i dok_dodokid.
Tytuł: Odp: Zestawienia sql Fz
Wiadomość wysłana przez: peiro w Marzec 14, 2019, 10:05:47
Witam, srk że tak długo ale miałem wyjazd. Powywalałem te casy i liczy ale jak zwykle nie wiem czy prawidłowo.
select
kh_Symbol as 'Kontrahent'
,d1.dok_DataWyst  as 'Data fakt. zal. KOŃCOWEJ'
,d1.dok_NrPelny  as 'Nr faktury zal. KOŃCOWEJ'
,d1.dok_WartBrutto  as 'Wart. brutto faktury zal. KOŃCOWEJ'
,d2.dok_DataWyst  as 'Data fakt. Zal. CZĄSTKOWEJ'
,d2.dok_NrPelny  as 'Nr faktury zal. CZĄSTKOWEJ'
,d2.dok_WartBrutto  as 'Wart. brutto faktury zal. CZĄSTKOWEJ'
from dok__Dokument as d1
Join kh__kontrahent ON d1.dok_PlatnikId = kh_id
left join dok__Dokument as d2 on d1.dok_DoDokId = d2.dok_DoDokId
where d1.dok_Podtyp = 5 and d2.dok_Podtyp = 4
--and (dok_DataWyst BETWEEN {DR:data dokumentu: POPRZEDNI_MIESIAC})
order by  kh_Symbol desc
Tytuł: Odp: Zestawienia sql Fz
Wiadomość wysłana przez: yemet w Marzec 14, 2019, 10:12:13
Dalej jest źle i widać to bez odpalania zapytania.