Autor Wątek: Sprzedaż po terminie  (Przeczytany 2666 razy)

0 użytkowników i 2 Gości przegląda ten wątek.

Offline jaras

  • Nowy użytkownik
  • *
  • Wiadomości: 23
  • Reputacja +4/-0
Sprzedaż po terminie
« dnia: Styczeń 25, 2016, 18:56:52 »
Proszę o pomoc w realizacji zestawienia SQL pokazującego listę Kontrahentów którzy kupili kiedykolwiek towar z grupy GRUPA ale nie  kupowali towaru z grupy GRUPA w ciągu ostatnich 60 dni.

Offline dkozlowski

  • Ekspert
  • *****
  • Wiadomości: 17189
  • Reputacja +800/-27
  • Wersja programu: GT/Navireo/nexo
Odp: Sprzedaż po terminie
« Odpowiedź #1 dnia: Styczeń 25, 2016, 19:05:04 »
Z czym masz problem, co zrobiłeś do tej pory ?
Daniel, Białystok.

Offline jaras

  • Nowy użytkownik
  • *
  • Wiadomości: 23
  • Reputacja +4/-0
Odp: Sprzedaż po terminie
« Odpowiedź #2 dnia: Luty 08, 2016, 10:49:46 »
Mam zestawienie kontrahentów kupujących daną grupę towarową w danym okresie  brakuje mi drugiego warunku "nie kupowali towaru z danej grupy w ciągu ostatnich 60 dni"

select
k.kh_Symbol AS Symbol,
k.adr_NazwaPelna AS Nazwa,
k.adr_NIP AS NIP,
k.adr_Miejscowosc AS Miejscowość,
k.adr_Kod,
k.adr_Adres AS Adres,
k.adr_Telefon AS Telefon
from dbo.vwKlienci k
inner join dbo.sl_GrupaKh g on (k.kh_IdGrupa = g.grk_Id)
where
(kh_typ in (1,2) ) -- Firma, osoba
and (kh_Zablokowany = 0) -- nie zablokowany
and kh_Id  in
(
select  s.dok_platnikid from vwzstsprzwgkhnt s
inner join dbo.tw__Towar t on (s.ob_TowId = t.tw_Id)
inner join dbo.sl_GrupaTw g on (t.tw_IdGrupa = g.grt_Id)
left join
(select dok_dodokid, ob_towid, sum(ob_wartNetto*ob_znak*case when dok_typ=14 then -1 else 1 end) wartx from dok__dokument d join dok_pozycja p on d.dok_id=p.ob_dokhanid
where (dbo.fnMAKE_DOKPARAM(dok_Typ, dok_Podtyp) IN (393216,917504))
group by dok_dodokid, ob_towid
)x on s.dok_id=x.dok_dodokid and s.ob_towid=x.ob_towid
where
(dbo.fnMAKE_DOKPARAM(s.dok_Typ, s.dok_Podtyp)  IN (131072,131075, 131077,131074,262144,1376258))
and (s.dok_Status <> 2)
and (t.tw_IdGrupa  in ({CHL_DB: select grt_Id, grt_Nazwa from dbo.sl_GrupaTw order by grt_Nazwa:Towar grupa:0:Nie wybrana}))
and (s.dok_DataWyst between {DR:Okres})
group by  s.dok_platnikid
having sum(s.ob_WartNetto + isnull(wartx,0) )>0
)
order by adr_Nazwa

Offline tomaszf

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 524
  • Reputacja +12/-0
  • Wersja programu: Subiekt GT 1.66
Odp: Sprzedaż po terminie
« Odpowiedź #3 dnia: Luty 08, 2016, 18:57:44 »
brakuje mi drugiego warunku "nie kupowali towaru z danej grupy w ciągu ostatnich 60 dni"

Najłatwiej:
napisz SELECTa który pokaże tych którzy kupowali towar z danej grupy w ciągu ostatnich 60 dni (będzie bardzo podobne do pierwszego) a potem od pierwszego wyniku odejmij wynik tego zapytania za pomocą EXCEPT.
Czyli schematycznie:
SELECT kontrahenci kupujący daną grupę towarową w danym okresie
EXCEPT
SELECT kontrahenci którzy nie kupowali towaru z danej grupy w ciągu ostatnich 60 dni

Forum Użytkownikow Subiekt GT

Odp: Sprzedaż po terminie
« Odpowiedź #3 dnia: Luty 08, 2016, 18:57:44 »