Forum Użytkownikow Subiekt GT
InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty przez: moro w Wrzesień 21, 2017, 10:21:50
-
Witam
W jaki sposób można pobrać z kfs ilość pozycji w sql? Dokładniej zależy mi na tym żeby określić czy w kfs były zmienione ceny czy ilości i wymyśliłem że chyba najłatwiej byłoby porównać ilość pozycji na kfs i fs oraz wartość kfs i fs.
Mógłby ktoś podsunąć pomysł jak się za to zabrać?
-
KFS ma tyle samo pozycji, bez względu na to co było zmieniane i czy w ogóle było
-
KFS ma tyle samo pozycji, bez względu na to co było zmieniane i czy w ogóle było
Jeżeli na fakturze mam np. 5 sztuk jabłek i 4 sztuki gruszek to mam razem 9 sztuk.
Jeżeli na korekcie zrobię 4 sztuki jabłek i 4 sztuki gruszek ( skoryguję 1 jabłko ) to mam razem 8 sztuk.
Chciałbym uzyskąć różnicę sum pozycji z FS i KFS.
-
Różnicę masz zapisaną przecież na pozycji KFS.
-
KFS ma tyle samo pozycji, bez względu na to co było zmieniane i czy w ogóle było
Chciałbym uzyskąć różnicę sum pozycji z FS i KFS.
Aha, to teraz wiemy o co naprawdę pytasz.
A tak przy okazji to jak ktoś zmieni ilość jabłek z 5 na 4, a ilość gruszek z 4 na 5 to suma zmian wyjdzie 0.
Wniosek będzie taki że zmieniono cenę. Podoba się?
-
Nie ma u nas takich sytuacji... że na korekcie są dodawane pozycje.
-
Rób jak uważasz, ja tylko zwracam uwagę na to że sposób który wybrałeś będzie dawał poprawne wyniki tylko w niektórych sytuacjach.
-
ok... a może ktoś podpowiedź skąd pobrać taką wartość?
-
ok... a może ktoś podpowiedź skąd pobrać taką wartość?
Jaką wartość ? Czytałeś moją odpowiedź ?
-
ok... a może ktoś podpowiedź skąd pobrać taką wartość?
Jaką wartość ? Czytałeś moją odpowiedź ?
Sumę wartości ilości wszystkich pozycji na dokumencie FS i KFS ( domyślam się że będzie to analogicznie )
Mam już joina pomiędzy dok_dokument a dok_pozycja.
Chodzi tylko o wyciągnięcie tej sumy ilości pozycji.
-
No to pobierasz z dok_Pozycja, możesz się wspomóc widokami wykorzystywanymi w zestawieniach.
-
No to pobierasz z dok_Pozycja, możesz się wspomóc widokami wykorzystywanymi w zestawieniach.
Ok moje zestawienie wygląda na razie tak:
SELECT
FS.dok_DataWyst AS "FS Data",
FS.dok_NrPelny as FS ,
PA.dok_NrPelny as PA,
KFS.dok_DataWyst AS "KFS Data",
KFS.dok_NrPelny as KFS,
ZW.dok_NrPelny as ZW,
KFS.dok_WartNetto as KFSnetto,
FS.dok_WartNetto as FSnetto,
(FS.dok_WartNetto+KFS.dok_WartNetto) AS "FSnetto-KFSnetto"
FROM dok__Dokument FS
LEFT JOIN dok__Dokument PA on FS.dok_doDokNrPelny = PA.dok_NrPelny AND PA.dok_Typ = 21
LEFT JOIN dok__Dokument KFS on FS.dok_NrPelny = KFS.dok_doDokNrPelny AND KFS.dok_Typ = 6
LEFT JOIN dok__Dokument ZW on PA.dok_NrPelny = ZW.dok_doDokNrPelny and ZW.dok_Typ = 14
LEFT JOIN adr__Ewid ON (FS.dok_OdbiorcaId = adr_IdObiektu AND adr_TypAdresu = 1)
LEFT JOIN sl_Kategoria ON sl_Kategoria.kat_Id = FS.dok_KatId
LEFT JOIN dok_Pozycja ON dok_Pozycja.ob_DokHanId = FS.dok_Id
WHERE FS.dok_Typ = 2
GROUP BY
FS.dok_DataWyst,
FS.dok_NrPelny,
PA.dok_NrPelny,
KFS.dok_DataWyst,
KFS.dok_NrPelny,
ZW.dok_NrPelny,
KFS.dok_WartNetto,
FS.dok_WartNetto,
adr__Ewid.adr_Nazwa,
sl_Kategoria.kat_Nazwa
order by FS.dok_DataWyst
Do niego chciałbym dopisać jeszcze sumę ilości pozycji na FS oraz sumę ilości pozycji na powiązanej z nią KFS.
Znalazłem wpis o sumowaniu pozycji na WZ ale nie potrafię tego połączyć z moim zestawieniem żeby działało dla FS i KFS.
select isnull(k.kat_nazwa,'(brak kategorii)') [Kategoria], cast(count(*) as money) [Ilość pozycji]
from dok__dokument v LEFT JOIN sl_kategoria k ON v.dok_katid=k.kat_id INNER JOIN dok_Pozycja p on v.dok_Id=p.ob_DokMagId
where
v.dok_datawyst between {DR:Data wystawienia:}
and v.dok_Typ=11
group by k.kat_id,k.kat_nazwa
gdy w moim zestawieniu do selecta dodam
cast(count(*) as money) as Ilość_pozycji
to mam tylko ilość pozycji na FS a nie sumę ilości sztuk z każdej pozycji.
Znalazłem również że w widoku
SELECT * from vwZstSprzWgKhnt
znajdują się poszczególne pozycje z ilością... ale nie mam pojęcia jak je zsumować i dodać jako wynik do mojego zestawienia....
-
Nie wiem dlaczego łączysz pozycje z fakturami
LEFT JOIN dok_Pozycja ON dok_Pozycja.ob_DokHanId = FS.dok_Id
a nie z korektami, czyli tak:
LEFT JOIN dok_Pozycja ON dok_Pozycja.ob_DokHanId = KFS.dok_Id
Gdybyś zrobił złaczenie z KFS to wystarczyło by dopisać po prostuSUM(ob_ilosc) AS [Suma ilosci]
-
Nie wiem dlaczego łączysz pozycje z fakturami
LEFT JOIN dok_Pozycja ON dok_Pozycja.ob_DokHanId = FS.dok_Id
a nie z korektami, czyli tak:
LEFT JOIN dok_Pozycja ON dok_Pozycja.ob_DokHanId = KFS.dok_Id
Gdybyś zrobił złaczenie z KFS to wystarczyło by dopisać po prostuSUM(ob_ilosc) AS [Suma ilosci]
Potrzebuję wyciągnąć tą wartość dla FS i jeżeli dla FS jest wystawiona KFS to równiez dla niej potrzebuję tą wartość.
Mając te 2 wartości mogą zrobić ich różnicę i otrzymać to czego szukam.
-
No to zrób. W czym problem?
Pokazałem jak to zrobić dla KFS, dla FS trzeba to zrobić dokładnie tak samo
-
SELECT
FS.dok_DataWyst AS "FS Data",
FS.dok_NrPelny as FS ,
PA.dok_NrPelny as PA,
KFS.dok_DataWyst AS "KFS Data",
KFS.dok_NrPelny as KFS,
ZW.dok_NrPelny as ZW,
SUM(ob_ilosc) AS "suma ilości pozycji skorygowanych",
FS.dok_WartNetto as FSnetto,
KFS.dok_WartNetto as KFSnetto,
(FS.dok_WartNetto+KFS.dok_WartNetto) AS "FSnetto-KFSnetto",
asl_PrzyczynaKorekty.pkr_Nazwa AS "przyczyna korekty"
FROM dok__Dokument FS
LEFT JOIN dok__Dokument PA on FS.dok_doDokNrPelny = PA.dok_NrPelny AND PA.dok_Typ = 21
LEFT JOIN dok__Dokument KFS on FS.dok_NrPelny = KFS.dok_doDokNrPelny AND KFS.dok_Typ = 6
LEFT JOIN dok__Dokument ZW on PA.dok_NrPelny = ZW.dok_doDokNrPelny and ZW.dok_Typ = 14
LEFT JOIN adr__Ewid ON (FS.dok_OdbiorcaId = adr_IdObiektu AND adr_TypAdresu = 1)
LEFT JOIN dok_Pozycja ON dok_Pozycja.ob_DokHanId = KFS.dok_Id
LEFT JOIN sl_PrzyczynaKorekty ON sl_PrzyczynaKorekty.pkr_Id = dok_Pozycja.ob_PrzyczynaKorektyId
WHERE FS.dok_Typ = 2
GROUP BY
FS.dok_DataWyst,
FS.dok_NrPelny,
PA.dok_NrPelny,
KFS.dok_DataWyst,
KFS.dok_NrPelny,
ZW.dok_NrPelny,
KFS.dok_WartNetto,
FS.dok_WartNetto,
adr__Ewid.adr_Nazwa,
sl_PrzyczynaKorekty.pkr_Nazwa
order by FS.dok_DataWyst
Takie zestawienie jak się okazało jest wystarczające. Dzięki za pomoc a wrzucam tu bo może komuś jeszcze się przyda.
-
Chyba się nie przyda:
-
SELECT
FS.dok_DataWyst AS "FS Data",
FS.dok_NrPelny as FS ,
PA.dok_NrPelny as PA,
KFS.dok_DataWyst AS "KFS Data",
KFS.dok_NrPelny as KFS,
ZW.dok_NrPelny as ZW,
SUM(ob_ilosc) AS "suma ilości pozycji skorygowanych",
FS.dok_WartNetto as FSnetto,
KFS.dok_WartNetto as KFSnetto,
(FS.dok_WartNetto+KFS.dok_WartNetto) AS "FSnetto-KFSnetto",
sl_PrzyczynaKorekty.pkr_Nazwa AS "przyczyna korekty"
FROM dok__Dokument FS
LEFT JOIN dok__Dokument PA on FS.dok_doDokNrPelny = PA.dok_NrPelny AND PA.dok_Typ = 21
LEFT JOIN dok__Dokument KFS on FS.dok_NrPelny = KFS.dok_doDokNrPelny AND KFS.dok_Typ = 6
LEFT JOIN dok__Dokument ZW on PA.dok_NrPelny = ZW.dok_doDokNrPelny and ZW.dok_Typ = 14
LEFT JOIN adr__Ewid ON (FS.dok_OdbiorcaId = adr_IdObiektu AND adr_TypAdresu = 1)
LEFT JOIN dok_Pozycja ON dok_Pozycja.ob_DokHanId = KFS.dok_Id
LEFT JOIN sl_PrzyczynaKorekty ON sl_PrzyczynaKorekty.pkr_Id = dok_Pozycja.ob_PrzyczynaKorektyId
WHERE FS.dok_Typ = 2
GROUP BY
FS.dok_DataWyst,
FS.dok_NrPelny,
PA.dok_NrPelny,
KFS.dok_DataWyst,
KFS.dok_NrPelny,
ZW.dok_NrPelny,
KFS.dok_WartNetto,
FS.dok_WartNetto,
adr__Ewid.adr_Nazwa,
sl_PrzyczynaKorekty.pkr_Nazwa
order by FS.dok_DataWyst
-
Teraz jest poprawnie, ale mimo tego do użycia to mu jeszcze wiele brakuje.
Chociażby wyboru okresu. Jak puścicłem u siebie to zobaczyłem faktury z 1999 roku.
Skoro ma pokazywać ilość pozycji na dokumentach, to dlaczego tylko pokazuje na KFS, na samych FS już nie, a założenie było, że ma być tu i tu.