Forum Użytkownikow Subiekt GT

InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty przez: Werden w Sierpień 21, 2020, 14:41:24

Tytuł: Zestawienie klientów którzy kupili jeden lub dwa razy
Wiadomość wysłana przez: Werden w Sierpień 21, 2020, 14:41:24
Witam
Potrzebuje zestawienia klientów którzy kupili u mnie od 1 lub 2 przed 1 listopada 2019. Lista danych które potrzebuje:

Dane firmy( pełne dane adresowe bez NIP) rodzaj zakupionego towaru, data ostatniej fa, wartość Fa netto lub brutto, oraz zakres dat do modyfikacji

Kiedyś zaglądając na to forum znalazłem zestawienie SQL które nadal mam w programie subiekt a które może uda się nieco zmodyfikować bo tego samego wątku nie mogę już znaleźć. A nie do końca rozumiem o co chodzi w zakresie dat i czego ono dotyczy akurat w tym przypadku. Bardzo proszę o pomoc.

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,
o.dok_NrPelny AS "Ostatni dokument",
o.dok_DataWyst AS "Data dokumentu",
o.dok_WartBrutto AS "Wartość brutto"
from dbo.vwKlienci k
inner join dbo.sl_GrupaKh g on (k.kh_IdGrupa = g.grk_Id)
left join
(   select
   rn = row_number() over ( partition by d.dok_platnikid order by d.dok_DataWyst desc ),
   d.dok_Id,
   d.dok_platnikid,
   d.dok_NrPelny,
   d.dok_DataWyst,
   d.dok_WartBrutto
   from   dok__dokument d
      where (dbo.fnMAKE_DOKPARAM(d.dok_Typ, d.dok_Podtyp)  IN (131072,131075, 131077,131074,262144,1376258))
) o on (k.kh_id = o.dok_platnikid)
where g.grk_id in ({CHL_DB: select grk_Id, grk_Nazwa from dbo.sl_GrupaKh order by grk_Nazwa:Grupa kontrahentów:0:Nie wybrane})
and (kh_typ in (1,2) ) -- Firma, osoba
and (kh_Zablokowany = 0) -- nie zablokowany
and (isnull(o.rn,1) = 1)
and kh_Id not 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_MagId in   ({CHL_DB: select mag_Id, mag_Nazwa from dbo.sl_Magazyn order by mag_Nazwa:Magazyn:0:Nie wybrany}))
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


/* kh_typ

1 - firma
2 - osoba
4 - pracownik
8 - uzytkownik
*/


Tytuł: Odp: Zestawienie klientów którzy kupili jeden lub dwa razy
Wiadomość wysłana przez: yemet w Sierpień 21, 2020, 15:05:11
klientów którzy kupili u mnie od 1 lub 2 przed 1 listopada 2019
o co w tym chodzi? Że dokonali jednego lub dwóch zakupów? Że w ogóle mieli 1 lub 2 dokumenty w jakimś okresie czy kupili dany towar 1 lub 2 razy? A jak dokonali więcej razy to nie mają być pokazywani? Podaj więcej szczegółów i konkretów.


PS. Patrząc na kolumny w pierwszym select-cie to zapytanie sprawia wrażenie niepotrzebnie udziwnionego.