Forum Użytkownikow Subiekt GT
InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty 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
*/
-
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.