Coin,
Przede wszystkim
bardzo dziękuję za odpowiedź i za pomoc. Twoje zapytanie jest świetne. O wiele bardziej eleganckie i ewidentnie nie robione "na pałę" jak moje. Jeżeli byłbyś w stanie jeszcze z czymś pomóc...
Chciałbym zapytać Cię jeszcze (oraz ewentualnie innych zorientowanych użytkowników):
1) Z Trs idzie koszt księgowy czyli koszt wytworzenia i jest zgodne dla każdego produktu - idzie z PW. Tak samo jak ilość. Czy jest możliwość by tak samo widzieć wartość netto/brutto sprzedaży dla każdej pozycji bym widział dla każdej FS i dla każdego PW oraz towaru jaka była wartość sprzedaży?
Analogicznie próbuję jeszcze dołączyć inne poziomy cen związane z PW: CENA 1 / CENA 2 / CENA 3 / CENA 4 / CENA 5.
2) Chciałbym mieć również połączenie z kontem 7 na które dana sprzedaż wpada. Dodałem sobie fragment kodu z zapytania, które wrzuciłem
, isnull(PDT_KontoCredit,'') 'Konto księgowe - MA'
,case
when LEN(PDT_KontoCredit) > 1 then isnull(PDT_Kwota,0)
when PDT_KontoCredit is null then ''
end as 'Wartość - MA'
i widzę konto oraz wartość ale całej faktury a nie poszczególnych jej towarów/elementów. Czy można to w jakiś sposób powiązać?
3)Dodałem sobie jeszcze kontrahenta do poszczególnych faktur oraz kod opiekuna (analizuję sprzedaż po KAM-ach). Konieczne jest jednak bym znał również dane osoby, która byłą operatorem dokumentu czyli de facto przygotowała ZS pod tę fakturę (czyli ZS->WZ->PW->FS). Może być kod, personalia już sobie jakoś zmapuję.
Finalnie mam na razie coś takiego:
DECLARE @DataOd varchar(10) , @DataDo varchar(10)
SELECT @DataOd = '2019-09-01', @DataDo = '2019-09-05'
SELECT CDN.NazwaObiektu(CDN.TraNag.TrN_GIDTyp, CDN.TraNag.TrN_GIDNumer, 0, 2) AS [Dokumet], CDN.Magazyny.MAG_Kod, CDN.TwrKarty.Twr_Kod,
CDN.TraSElem.TrS_KosztKsiegowy, CDN.TraSElem.TrS_Ilosc, CDN.TraNag.TrN_WartoscWal, TrE_RzeczywistaNetto , cdn.nazwaobiektu(dst_gidtyp, dst_gidnumer,0,2) as [Dokumnet dostawy]
,Twr_Nazwa
,Grupa_Główna = 'Grupa Główna'
,left(cdn.TwrGrupaPelnaNazwa(tgd_gronumer),CharIndex('/',cdn.TwrGrupaPelnaNazwa(tgd_gronumer),1)-1) 'Grupa.Poziom1'
,cdn.TwrGrupaPelnaNazwa(tgd_gronumer) 'Grupa.Poziom2'
,KG.Knt_Akronim 'Kontrahent Główny - Akronim'
,KG.Knt_Nazwa1 'Kontrahent Główny - Pełna Nazwa'
,KG.Knt_Nip 'Kontrahent Główny - NIP'
,KG.Knt_Kraj 'Kontrahent Główny - Kraj'
,KG.Knt_Miasto 'Kontrahent Główny - Miasto'
,KD.Knt_Akronim 'Kontrahent Docelowy - Akronim'
,KD.Knt_Nip 'Kontrahent Docelowy - NIP'
,KD.Knt_Kraj 'Kontrahent Docelowy - Kraj'
,KD.Knt_Miasto 'Kontrahent Docelowy - Miasto'
,TrN_OpiNumer 'Kontrahent Opiekun'
, isnull(PDT_KontoCredit,'') 'Konto księgowe - MA'
,case
when LEN(PDT_KontoCredit) > 1 then isnull(PDT_Kwota,0)
when PDT_KontoCredit is null then ''
end as 'Wartość - MA'
FROM CDN.TraSElem INNER JOIN
CDN.TraNag ON CDN.TraSElem.TrS_GIDNumer = CDN.TraNag.TrN_GIDNumer INNER JOIN
CDN.TraElem ON CDN.TraElem.TrE_GIDNumer = CDN.TraSElem.TrS_GIDNumer AND CDN.TraElem.TrE_GIDLp = CDN.TraSElem.TrS_GIDLp INNER JOIN
CDN.TwrKarty ON CDN.TraElem.TrE_TwrNumer = CDN.TwrKarty.Twr_GIDNumer INNER JOIN
CDN.Magazyny ON CDN.TraSElem.TrS_MagNumer = CDN.Magazyny.MAG_GIDNumer JOIN cdn.dostawy on Dst_GIDNumer=TrS_DstNumer
left join cdn.twrGrupyDom on tgd_gidtyp=twr_gidtyp and tgd_gidnumer=twr_gidnumer
left join cdn.KntKarty KG on KG.Knt_GIDnumer = TrN_KntNumer and KG.Knt_GIDTyp = TrN_KntTyp
left join cdn.KntKarty KD on KD.Knt_GIDnumer = TrN_KnDNumer and KD.Knt_GIDTyp = TrN_KnDTyp
left join cdn.TraPlat TP on TrN_GIDTyp=TP.TrP_GIDTyp AND TrN_GIDNumer=TP.TrP_GIDNumer left join cdn.TrNOpisy as o on TrN_GIDNumer = TnO_TrnNumer and TrN_GIDLp = TnO_TrnLp
--left join cdn.Predekrety on a.TrN_GIDTyp=PDT_GIDTyp AND a.TrN_GIDNumer=PDT_GIDNumer and PDT_GIDTyp IN (1489,1497,2001,2009,1520,1528,1521,1529,2033,2041,2034,2042,2035,2043,2039,2047,1616,1617,1936,1937,2008,2010)
left join cdn.Predekrety on TrN_GIDTyp=PDT_GIDTyp AND TrN_GIDNumer=PDT_GIDNumer and PDT_GIDTyp IN (1489,1497,2001,2009,1520,1528,1521,1529,2033,2041,2034,2042,2035,2043,2039,2047,1616,1617,1936,1937,2008,2010)
where TrN_Data3 BETWEEN DATEDIFF(d,'1800-12-28',CAST(@DataOd AS DATE)) AND DATEDIFF(d,'1800-12-28',CAST(@DataDo AS DATE)) and TrN_GIDTyp in (2033,2041,2045,2037) AND Left(PDT_KontoCredit,1) = 7 --- AND TrN_GIDNumer=gidnumerdokumentusprawdzanego
ORDER BY CDN.TraSElem.TrS_TrnTStamp, CDN.TraNag.TrN_GIDNumer
Coin pisze: ↑05 lis 2019, 09:03
Można np. w ten sposób
SELECT CDN.NazwaObiektu(CDN.TraNag.TrN_GIDTyp, CDN.TraNag.TrN_GIDNumer, 0, 2) AS [Dokumet], CDN.Magazyny.MAG_Kod, CDN.TwrKarty.Twr_Kod,
CDN.TraSElem.TrS_KosztKsiegowy, CDN.TraSElem.TrS_Ilosc, cdn.nazwaobiektu(dst_gidtyp, dst_gidnumer,0,2) as [Dokumnet dostawy]
FROM CDN.TraSElem INNER JOIN
CDN.TraNag ON CDN.TraSElem.TrS_GIDNumer = CDN.TraNag.TrN_GIDNumer INNER JOIN
CDN.TraElem ON CDN.TraElem.TrE_GIDNumer = CDN.TraSElem.TrS_GIDNumer AND CDN.TraElem.TrE_GIDLp = CDN.TraSElem.TrS_GIDLp INNER JOIN
CDN.TwrKarty ON CDN.TraElem.TrE_TwrNumer = CDN.TwrKarty.Twr_GIDNumer INNER JOIN
CDN.Magazyny ON CDN.TraSElem.TrS_MagNumer = CDN.Magazyny.MAG_GIDNumer JOIN
cdn.dostawy on
Dst_GIDNumer=TrS_DstNumer
where (TrN_GIDTyp=giddokumentusprawdzanego AND TrN_GIDNumer=gidnumerdokumentusprawdzanego)
ORDER BY CDN.TraSElem.TrS_TrnTStamp, CDN.TraNag.TrN_GIDNumer
Zapytanie pokaże to co masz w zakładce dostawy np. na dokumencie FS