Autor Wątek: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy  (Przeczytany 272192 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline yemet

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 1246
  • Reputacja +46/-1
  • Wersja programu: Navireo
Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
« Odpowiedź #45 dnia: Sierpień 27, 2018, 17:02:13 »
Trzeba dopisać joina do tabeli słownika magazynów i doczepić kontrolkę filtru na magazyny.

EDIT: Sam filtr na magazyny wystarczy jak nie potrzebujesz wyświetlać nazwy magazynu.
« Ostatnia zmiana: Sierpień 27, 2018, 17:43:43 wysłana przez yemet »

Offline alutka

  • Nowy użytkownik
  • *
  • Wiadomości: 39
  • Reputacja +0/-0
  • Wersja programu: Gratyfikant
Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
« Odpowiedź #46 dnia: Październik 16, 2018, 15:08:31 »
jak napisać polecenie SQL żeby mi wyfiltrowało z listy towarów/produktów: cechę towaru oraz kod CN produktu?
musi być:      symbol kartotekowy, nazwa produktu, cecha, kod CN

Offline Biniew

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 4095
  • Reputacja +275/-17
  • Wersja programu: GT i Nexo
Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
« Odpowiedź #47 dnia: Październik 17, 2018, 07:36:09 »
a ktora cecha? bo grupa jest jedna i to proste a cech moze byc bardzo wiele

Offline arronlewis

  • Nowy użytkownik
  • *
  • Wiadomości: 16
  • Reputacja +0/-0
  • Wersja programu: 1.36
Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
« Odpowiedź #48 dnia: Styczeń 03, 2019, 12:13:11 »
Witam

Szukam pomocy w przygotowaniu zestawienia, które będzie dla wybranego towaru pokazywało raport obrotów z następującymi kolumnami:

Lp., Data dokumentu, Nr dokumentu, Nazwa pełna Kontrahenta, Miasto Kontrahenta, Przychód (ilościowo), Rozchód (ilościowo)

Podobne zestawienie można wyciągnąć z Informatora towaru, ale niestety nie można wybrać wszystkich powyższych kolumn (np. nazwa kontrahenta tylko skrócona zamiast pełnej, nie można wybrać kolumny miasto), a ponadto potrzebuję, aby przy nazwie towaru na wydruku znalazła się informacja Symbol towaru u dostawcy oraz Uwagi z zakładki Opis w kartotece towaru (na wydruku pola te musiałyby się nazywać kolejno "Termin ważności" i "Seria"). Fajnie, gdyby na wydruku pojawiła się również informacja o wybranym okresie dla którego jest wygenerowane zestawienia.

Czy ktoś pomoże? :)

Offline candy

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 4871
  • Reputacja +172/-11
Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
« Odpowiedź #49 dnia: Styczeń 03, 2019, 12:40:02 »
A zdradzisz jak sobie wyobrażasz tę pomoc?
Bo tak na podstawie pytania to nie bardzo wiem czego oczekujesz.
Że ktoś je napisze czy że ktoś podpowie, w których tabelach masz szukać?
Nie pytaj co rząd może zrobić dla Ciebie. Spytaj czy mógłby tego nie robić.

Offline arronlewis

  • Nowy użytkownik
  • *
  • Wiadomości: 16
  • Reputacja +0/-0
  • Wersja programu: 1.36
Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
« Odpowiedź #50 dnia: Styczeń 03, 2019, 18:30:11 »
W sensie, że ktoś napisze takie zestawienie odpłatnie :)

Offline Biniew

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 4095
  • Reputacja +275/-17
  • Wersja programu: GT i Nexo
Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
« Odpowiedź #51 dnia: Styczeń 03, 2019, 19:27:31 »
teraz to zes pomógł:-)

Offline adam_implus

  • Nowy użytkownik
  • *
  • Wiadomości: 2
  • Reputacja +0/-0
  • Wersja programu: SubiegtGT
Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
« Odpowiedź #52 dnia: Marzec 15, 2021, 14:47:02 »
Witam, dla większości to pewnie proste, ale ja w SQL nie siedzę. Potrzebuje wygenerować zestawienie: nr id kontrahenta, symbol, pełna nazwa tego kontrahenta, nr konta wirtualnego, dowolny parametr własny kontrahenta. Może ktoś pomoże?

Offline kartman

  • Nowy użytkownik
  • *
  • Wiadomości: 10
  • Reputacja +0/-0
  • Wersja programu: 1.31 SP1 HF1
Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
« Odpowiedź #53 dnia: Październik 23, 2021, 15:30:41 »
Wlasnie ucze sie SQLa, to moje pierwsze kroki.
Przygotowalem sobie zestawienie, ktore prezentuje mi jaka jest masa towarów znajdujących sie na ZK wystawionych w danym oknie czasowym pogrupowane wg Kontrahentow, Czyli wiersz 1: Kontrahent1 | X kg, wiersz 2: Kontrahent2 | Y kg, wiersz 3: Kontrahent3 | Z kg.
Tresc zapytania SQL na dole.

Chcialbym zrobic drugie zestawienie, ktore zaprezentuje to samo, ale z WZ, zamiast ZK, wiec w nowym zapytaniu zmienilem tylko dok_Typ=16 na dok_Typ=11. Zapytanie przechodzi test "Testuj zapytanie", ale w przeciwienstwie to identycznego zapytania na podstawie dok_Typ=16 daje puste zestawienie.
Gdzie robie blad?

PS Poleci ktos jakies sciagawki z opisem co faktycznie znajduje sie w danej kolumnie w glownych tabelach? Np. czym jest dok_Podtyp=0 czym 1 a czym 2??

SELECT
kh__Kontrahent.kh_Symbol AS Kontrahent
, SUM(tw__Towar.tw_Masa*dok_Pozycja.ob_Ilosc) AS Masa
FROM dok_Pozycja
INNER JOIN tw__Towar   ON dok_Pozycja.ob_TowId         =   tw__Towar.tw_Id
INNER JOIN dok__Dokument   ON dok_Pozycja.ob_DokHanId      =   dok__Dokument.dok_Id
INNER JOIN kh__Kontrahent   ON kh__Kontrahent.kh_Id         =   dok__Dokument.dok_PlatnikId
WHERE (
 (dok__Dokument.dok_DataWyst BETWEEN {D: Wprowadzone w okresie od:} AND {D: do})
AND (dok__Dokument.dok_Typ=16)
)
GROUP BY kh__Kontrahent.kh_Symbol
ORDER BY Kontrahent ASC
;

Offline dkozlowski

  • Ekspert
  • *****
  • Wiadomości: 17040
  • Reputacja +798/-27
  • Wersja programu: GT/Navireo/nexo
Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
« Odpowiedź #54 dnia: Październik 23, 2021, 15:43:28 »
Chcialbym zrobic drugie zestawienie, ktore zaprezentuje to samo, ale z WZ, zamiast ZK, wiec w nowym zapytaniu zmienilem tylko dok_Typ=16 na dok_Typ=11. Zapytanie przechodzi test "Testuj zapytanie", ale w przeciwienstwie to identycznego zapytania na podstawie dok_Typ=16 daje puste zestawienie.
Gdzie robie blad?

Złączenie z dokumentami magazynowymi jest realizowane poprzez kolumnę "ob_DokMagId", a nie "ob_DokHanId".

PS Poleci ktos jakies sciagawki z opisem co faktycznie znajduje sie w danej kolumnie w glownych tabelach? Np. czym jest dok_Podtyp=0 czym 1 a czym 2??

Powtarzamy to do znudzenia na forum, nie rozumiem dlaczego nie skorzystałeś z tej zgromadzonej przez lata wiedzy ? Opis struktury bazy danych znajduje się w równie niedocenianej i mijanej pomocy do programu.

Polecam też współpracę z wybranym dostawcą programu/serwisantem, osoby w odróżnieniu od dokumentacji odpowiadają na zadane pytania.

ps.
Przypominam też, że podstawą do tworzenia rozwiązań dodatkowych jest znajomość działania programu, a w programie można określać ilość również w dodatkowych jednostkach miary, ale waga towaru jest zapisywana w jednostce podstawowej - wartości przeliczasz według jednostki wybranej na dokumencie, a nie podstawowej jednostki:
 
Cytuj
ob_Ilosc   Ilosc towaru w wybranej jednostce na pozycji
ob_IloscMag   Ilość towaru w jednostce podstawowej towaru
« Ostatnia zmiana: Październik 23, 2021, 15:51:11 wysłana przez dkozlowski »
Daniel, Białystok.

Offline kartman

  • Nowy użytkownik
  • *
  • Wiadomości: 10
  • Reputacja +0/-0
  • Wersja programu: 1.31 SP1 HF1
Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
« Odpowiedź #55 dnia: Listopad 02, 2021, 02:21:07 »
Podkresle jeszcze raz, tak jak w poprzednim poscie: to moje pierwsze kroki w SQLu. Litosci ;)

Popelnilem pewny zapytanie SQL, ktorego tresc jest zmanipulowanym przeze mnie wynikiem SQL Profilera dla zapytania, ktore baza dostaje kiedy uruchamiam zestawienie "Sprzedaz wedlug kontrahentow". Nie analizowalem CASE'ow i JOINow, tylko sklecilem cos takiego, zeby zamiast marzy otrzymac "narzut" czyli zysk/koszt. Usunalem tez niepotrzebne mi kolumny, dodalem troche Transact SQLa zeby moc wybierac zakres czasu i filtrowac po sl_GrupaKh.grk_Id.
Oto tresc zapytania:

SELECT
adr_Nazwa AS 'Nazwa'
, SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE ob_WartNetto * ob_Znak END) AS 'Netto'
, SUM(CASE WHEN (ob_TowRodzaj&22)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id)*ob_Znak END) AS 'Koszt'
, SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE (ob_WartNetto-CASE WHEN (ob_TowRodzaj&6)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id) END) * ob_Znak END) as 'Zysk'
, Narzut = CONVERT(MONEY, CASE WHEN SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE ob_WartNetto * ob_Znak END)<>0 THEN (SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE (ob_WartNetto-CASE WHEN (ob_TowRodzaj&6)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id) END) * ob_Znak END)/SUM(CASE WHEN (ob_TowRodzaj&22)>0 THEN 1 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id)*ob_Znak END))*100 ELSE 1 END )
FROM vwZstSprzWgKhnt
LEFT JOIN kh__Kontrahent   ON   dok_PlatnikId = kh_Id
LEFT JOIN adr__Ewid         ON   kh_Id = adr_IdObiektu
LEFT JOIN tw__Towar         ON   ob_TowId = tw_Id
LEFT JOIN sl_Kategoria      ON   dok_KatId = kat_Id
LEFT JOIN sl_GrupaKh      ON   kh_IdGrupa = grk_Id 
WHERE
dok_Status <> 2 AND ((adr_TypAdresu = 1) OR (dok_PlatnikId IS NULL))
AND (dok_DataWyst BETWEEN {D: od:} AND {D: do})
AND (dbo.fnMAKE_DOKPARAM(dok_Typ, dok_Podtyp) IN (131072,         131074, 131075, 131076, 131077, 262144, 393216, 393217, 393218, 1376256, 1376257, 1376258, 1376259, 917504, 917505, 4063232, 4390912, 4390913, 4456448, 4521984)) AND (dok_MagId IN (1))
AND  ob_TowRodzaj & 31 > 0 
AND sl_GrupaKh.grk_Id IN ({DB: SELECT grk_Id, grk_Nazwa FROM sl_GrupaKh:Przedstawiciel})
GROUP BY adr_Nazwa

Daje mi to co chce podejrzec.

Popelnilem tez drugie - bardzo podobne - zapytanie. Roznice sa wytluszczone:

SELECT
adr_Nazwa AS 'Nazwa'
, SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE ob_WartNetto * ob_Znak END) AS 'Netto'
, SUM(CASE WHEN (ob_TowRodzaj&22)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id)*ob_Znak END) AS 'Koszt'
, SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE (ob_WartNetto-CASE WHEN (ob_TowRodzaj&6)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id) END) * ob_Znak END) as 'Zysk'
, Narzut2 = CONVERT(MONEY, CASE WHEN SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE ob_WartNetto * ob_Znak END)<>0 THEN (SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE (ob_WartNetto-CASE WHEN (ob_TowRodzaj&6)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id) END) * ob_Znak END)/SUM(CASE WHEN (ob_TowRodzaj&22)>0 THEN 1 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id)*ob_Znak END))*100 ELSE 1 END )
FROM vwZstSprzWgKhnt
LEFT JOIN kh__Kontrahent   ON   dok_PlatnikId = kh_Id
LEFT JOIN adr__Ewid         ON   kh_Id = adr_IdObiektu
LEFT JOIN tw__Towar         ON   ob_TowId = tw_Id
LEFT JOIN sl_Kategoria      ON   dok_KatId = kat_Id
LEFT JOIN sl_GrupaKh      ON   kh_IdGrupa = grk_Id 
WHERE
dok_Status <> 2 AND ((adr_TypAdresu = 1) OR (dok_PlatnikId IS NULL))
AND (dok_DataWyst BETWEEN {D: od:} AND {D: do})
AND (dbo.fnMAKE_DOKPARAM(dok_Typ, dok_Podtyp) IN (131072,         131074, 131075, 131076, 131077, 262144, 393216, 393217, 393218, 1376256, 1376257, 1376258, 1376259, 917504, 917505, 4063232, 4390912, 4390913, 4456448, 4521984)) AND (dok_MagId IN (1))
AND  ob_TowRodzaj & 31 > 0 
AND sl_GrupaKh.grk_Id IN ({DB: SELECT grk_Id, grk_Nazwa FROM sl_GrupaKh:Przedstawiciel})
AND tw__Towar.tw_IdGrupa NOT IN (9, 28)
GROUP BY adr_Nazwa

Oba zapytania oddzielnie daja mi uzyteczne odpowiedzi. Mimo to, chcialbym niejako dodac kolumne "Narzut2" z drugiego zapytania - z uwzglednieniem tego dodatkowego argumentu w klauzuli WHERE - do mojego pierwszego zapytania tak, zeby w odpowiedzi na to pierwsze zapytanie w Subiekcie obok kolumny Narzut pojawila sie kolumna Narzut2 z wartosciami z drugiego zapytania.

Jak to polaczyc?

Subquery w klauzuli SELECT? Probowalem takiego:

SELECT
adr_Nazwa AS 'Nazwa'
, SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE ob_WartNetto * ob_Znak END) AS 'Netto'
, SUM(CASE WHEN (ob_TowRodzaj&22)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id)*ob_Znak END) AS 'Koszt'
, SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE (ob_WartNetto-CASE WHEN (ob_TowRodzaj&6)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id) END) * ob_Znak END) as 'Zysk'
, Narzut = CONVERT(MONEY, CASE WHEN SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE ob_WartNetto * ob_Znak END)<>0 THEN (SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE (ob_WartNetto-CASE WHEN (ob_TowRodzaj&6)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id) END) * ob_Znak END)/SUM(CASE WHEN (ob_TowRodzaj&22)>0 THEN 1 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id)*ob_Znak END))*100 ELSE 1 END )
, Narzut2 =
(
SELECT
Narzut2 = CONVERT(MONEY, CASE WHEN SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE ob_WartNetto * ob_Znak END)<>0 THEN (SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE (ob_WartNetto-CASE WHEN (ob_TowRodzaj&6)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id) END) * ob_Znak END)/SUM(CASE WHEN (ob_TowRodzaj&22)>0 THEN 1 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id)*ob_Znak END))*100 ELSE 1 END )
FROM vwZstSprzWgKhnt
LEFT JOIN kh__Kontrahent   ON   dok_PlatnikId = kh_Id
LEFT JOIN adr__Ewid         ON   kh_Id = adr_IdObiektu
LEFT JOIN tw__Towar         ON   ob_TowId = tw_Id
LEFT JOIN sl_Kategoria      ON   dok_KatId = kat_Id
LEFT JOIN sl_GrupaKh      ON   kh_IdGrupa = grk_Id
WHERE
dok_Status <> 2 AND ((adr_TypAdresu = 1) OR (dok_PlatnikId IS NULL))
AND (dok_DataWyst BETWEEN {D: od:} AND {D: do})
AND (dbo.fnMAKE_DOKPARAM(dok_Typ, dok_Podtyp) IN (131072,         131074, 131075, 131076, 131077, 262144, 393216, 393217, 393218, 1376256, 1376257, 1376258, 1376259, 917504, 917505, 4063232, 4390912, 4390913, 4456448, 4521984)) AND (dok_MagId IN (1))
AND  ob_TowRodzaj & 31 > 0
AND sl_GrupaKh.grk_Id IN ({DB: SELECT grk_Id, grk_Nazwa FROM sl_GrupaKh:Przedstawiciel})
AND tw__Towar.tw_IdGrupa NOT IN (9, 28)
)
FROM vwZstSprzWgKhnt
LEFT JOIN kh__Kontrahent   ON   dok_PlatnikId = kh_Id
LEFT JOIN adr__Ewid         ON   kh_Id = adr_IdObiektu
LEFT JOIN tw__Towar         ON   ob_TowId = tw_Id
LEFT JOIN sl_Kategoria      ON   dok_KatId = kat_Id
LEFT JOIN sl_GrupaKh      ON   kh_IdGrupa = grk_Id
WHERE
dok_Status <> 2 AND ((adr_TypAdresu = 1) OR (dok_PlatnikId IS NULL))
AND (dok_DataWyst BETWEEN {D: od:} AND {D: do})
AND (dbo.fnMAKE_DOKPARAM(dok_Typ, dok_Podtyp) IN (131072,         131074, 131075, 131076, 131077, 262144, 393216, 393217, 393218, 1376256, 1376257, 1376258, 1376259, 917504, 917505, 4063232, 4390912, 4390913, 4456448, 4521984)) AND (dok_MagId IN (1))
AND  ob_TowRodzaj & 31 > 0
AND sl_GrupaKh.grk_Id IN ({DB: SELECT grk_Id, grk_Nazwa FROM sl_GrupaKh:Przedstawiciel})
GROUP BY adr_Nazwa

Niestety w kazdym wierszu kolumny Narzut2 podaje mi te sama wartosc.

Subquery w innej klauzuli, np FROM?

Offline kartman

  • Nowy użytkownik
  • *
  • Wiadomości: 10
  • Reputacja +0/-0
  • Wersja programu: 1.31 SP1 HF1
Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
« Odpowiedź #56 dnia: Listopad 03, 2021, 12:35:39 »
Udało się przy pomocy kolegi spoza tego forum. W razie gdyby kogos to interesowalo, tresc zapytania ponizej:

SELECT
adr_Nazwa AS 'Nazwa'
, SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE ob_WartNetto * ob_Znak END) AS 'Netto'
, SUM(CASE WHEN (ob_TowRodzaj&22)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id)*ob_Znak END) AS 'Koszt'
, SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE (ob_WartNetto-CASE WHEN (ob_TowRodzaj&6)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id) END) * ob_Znak END) as 'Zysk'
, Narzut = CONVERT(MONEY, CASE WHEN SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE ob_WartNetto * ob_Znak END)<>0 THEN (SUM(CASE WHEN (ob_TowRodzaj&16)>0 THEN 0 ELSE (ob_WartNetto-CASE WHEN (ob_TowRodzaj&6)>0 THEN 0 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id) END) * ob_Znak END)/SUM(CASE WHEN (ob_TowRodzaj&22)>0 THEN 1 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id)*ob_Znak END))*100 ELSE 1 END )
, Narzut2 = CONVERT(MONEY, CASE WHEN SUM(CASE WHEN (ob_TowRodzaj&16)>0 OR tw__Towar.tw_IdGrupa IN (9, 28) THEN 0 ELSE ob_WartNetto * ob_Znak END)<>0 THEN (SUM(CASE WHEN (ob_TowRodzaj&16)>0  OR tw__Towar.tw_IdGrupa IN (9, 28) THEN 0 ELSE (ob_WartNetto-CASE WHEN (ob_TowRodzaj&6)>0 OR tw__Towar.tw_IdGrupa IN (9, 28) THEN 0 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id) END) * ob_Znak END) / SUM(CASE WHEN (ob_TowRodzaj&22)>0 OR tw__Towar.tw_IdGrupa IN (9, 28) THEN 1 ELSE dbo.fnZestSub_KosztSpr({D: od:} , ob_Id)*ob_Znak END))*100 ELSE 1 END )
FROM vwZstSprzWgKhnt
LEFT JOIN kh__Kontrahent   ON   dok_PlatnikId = kh_Id
LEFT JOIN adr__Ewid         ON   kh_Id = adr_IdObiektu
LEFT JOIN tw__Towar         ON   ob_TowId = tw_Id
LEFT JOIN sl_Kategoria      ON   dok_KatId = kat_Id
LEFT JOIN sl_GrupaKh      ON   kh_IdGrupa = grk_Id 
WHERE
dok_Status <> 2 AND ((adr_TypAdresu = 1) OR (dok_PlatnikId IS NULL))
AND (dok_DataWyst BETWEEN {D: od:} AND {D: do})
AND (dbo.fnMAKE_DOKPARAM(dok_Typ, dok_Podtyp) IN (131072,         131074, 131075, 131076, 131077, 262144, 393216, 393217, 393218, 1376256, 1376257, 1376258, 1376259, 917504, 917505, 4063232, 4390912, 4390913, 4456448, 4521984)) AND (dok_MagId IN (1))
AND  ob_TowRodzaj & 31 > 0 
AND sl_GrupaKh.grk_Id IN ({DB: SELECT grk_Id, grk_Nazwa FROM sl_GrupaKh:Przedstawiciel})
GROUP BY adr_Nazwa

Offline yemet

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 1246
  • Reputacja +46/-1
  • Wersja programu: Navireo
Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
« Odpowiedź #57 dnia: Listopad 03, 2021, 12:42:06 »
dbo.fnZestSub_KosztSpr({D: od:}
Przy funkcjach sprawdzających koszt powinno być użyte {D: do} jeśli koszt ma być liczony zgodnie z fabrycznym zestawieniem.

AND sl_GrupaKh.grk_Id IN ({DB: SELECT grk_Id, grk_Nazwa FROM sl_GrupaKh:Przedstawiciel})
Przedstawiciel jako grupa kontrahentów? Można i tak ale bardziej naturalnym wyborem byłby opiekun kontrahenta.

Forum Użytkownikow Subiekt GT

Odp: Tutorial : Piszemy zestawienia SQL dla Subiekt GT - podstawy
« Odpowiedź #57 dnia: Listopad 03, 2021, 12:42:06 »