Autor Wątek: ZESTAWIENIE STATYSTYKA - filtrowanie po cechach towarów  (Przeczytany 2866 razy)

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

Offline myszuge

  • Użytkownik
  • **
  • Wiadomości: 90
  • Reputacja +0/-0
  • Wersja programu: subiekt gt 1.31
ZESTAWIENIE STATYSTYKA - filtrowanie po cechach towarów
« dnia: Wrzesień 14, 2017, 14:08:23 »
Witam, mam działajace zestawienie,  musze dodać do zestawienia filtrowanie(grupowanie) po cechac towarów gdyż mam w systemie przypisane cechy inwentaryzacyjna i nieinwentaryzacyjna.  Statystyka ma działac na własnie towary z cecha inwentaryzacyjne bo niestety po grupach nic mi nie daje bo w danych grupach sa z obydwoma cechami towary.

Moje wypociny : szczerze, to jest złe na 100% bo niewiem z jakis tabel korzystać, coś wynalazłem ale jednak to nie sa te tabele. Może ktoś pomoże, najlepiej gotowe rozwiazanie :)

(
sl_cechaTW in ({ CHL_DB: select ctw_Id, ctw_nazwa from dbo.sl_cechaTw order by ctw_nazwa:Cecha:0:Nie wybrana})

)

select tw_Symbol [Symbol]
,tw_Nazwa [Nazwa]
,case tw_Zablokowany when 1 then CAST(0 as bit) else CAST(1 as bit) end [Aktywny]

,ISNULL(w.ilosc4, 0) [4 lata ilość]
,ISNULL(w.ilosc3, 0) [3 lata ilość]
,ISNULL(w.ilosc2, 0) [2 lata ilość]
,ISNULL(w.ilosc1, 0) [2016 ilość - poprzedni rok]
,ISNULL(w.ilosc0, 0) [2017 ilość- -biezacy rok]

,(select SUM(st_Stan)
  from tw_Stan
  where st_TowId = tw_Id
  and st_MagId in (1,6,7)) [STAN NA MAG]

,(select st_Stan
  from tw_Stan
  where st_TowId = tw_Id
  and st_MagId in (1)) [TAS]

,(select st_Stan
  from tw_Stan
  where st_TowId = tw_Id
  and st_MagId in (6)) [Vent s.c.]

,(select st_Stan
  from tw_Stan
  where st_TowId = tw_Id
  and st_MagId in (7)) [ZNUM s.c.]

,(select st_Stan
  from tw_Stan
  where st_TowId = tw_Id
  and st_MagId in (2)) [VENT AUTO]

,(select st_Stan
  from tw_Stan
  where st_TowId = tw_Id
  and st_MagId in (3)) [Znum]

,(select SUM(st_Stan)
  from tw_Stan
  where st_TowId = tw_Id
  and st_MagId in (4)) [Nomir]

from tw__Towar
left join
(
select ob_TowId
,SUM(case when dok_DataWyst between DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) - 0, 0) and DATEADD(DAY, -1, DATEADD(YEAR, DATEDIFF(YEAR, 0, DATEADD(YEAR, 1, GETDATE())) - 0, 0)) then ob_IloscMag else 0 end) ilosc0
,SUM(case when dok_DataWyst between DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) - 1, 0) and DATEADD(DAY, -1, DATEADD(YEAR, DATEDIFF(YEAR, 0, DATEADD(YEAR, 1,GETDATE())) - 1, 0)) then ob_IloscMag else 0 end) ilosc1
,SUM(case when dok_DataWyst between DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) - 2, 0) and DATEADD(DAY, -1, DATEADD(YEAR, DATEDIFF(YEAR, 0, DATEADD(YEAR, 1, GETDATE())) - 2, 0)) then ob_IloscMag else 0 end) ilosc2
,SUM(case when dok_DataWyst between DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) - 3, 0) and DATEADD(DAY, -1, DATEADD(YEAR, DATEDIFF(YEAR, 0, DATEADD(YEAR, 1, GETDATE())) - 3, 0)) then ob_IloscMag else 0 end) ilosc3
,SUM(case when dok_DataWyst between DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) - 4, 0) and DATEADD(DAY, -1, DATEADD(YEAR, DATEDIFF(YEAR, 0, DATEADD(YEAR, 1, GETDATE())) - 4, 0)) then ob_IloscMag else 0 end) ilosc4


from dok__Dokument
join dok_Pozycja on dok_Id = ob_DokMagId
where dok_Status <> 2
and dok_Typ in (13)

and dok_DataWyst >= DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) - 5, 0)
group by ob_TowId
) w on tw_Id = ob_TowId
where tw_Usuniety = 0
and
(
tw_Zablokowany = {LI:(dowolnym)#-1#aktywne#0#nieaktywne#1#:Towary o statusie:-1}
or
-1 = {LI:(dowolnym)#-1#aktywne#0#nieaktywne#1#:Towary o statusie:-1}
)
and
(select SUM(st_Stan)
 from tw_Stan
 where st_TowId = tw_Id
 and st_MagId in (1,2,3,4,6,7)) > {LI:(dowolnym)#-1#niezerowym#0:o stanie:-1}

and
(

tw_IdGrupa in ({CHL_DB: select grt_Id, grt_Nazwa from dbo.sl_GrupaTw order by grt_Nazwa:Grupa:0:Nie wybrana})
)

and


Offline Chris

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 2850
  • Reputacja +275/-0
  • Wersja programu: GT, Nexo - aktualne
Krzysztof, Radom

Offline myszuge

  • Użytkownik
  • **
  • Wiadomości: 90
  • Reputacja +0/-0
  • Wersja programu: subiekt gt 1.31
Odp: ZESTAWIENIE STATYSTYKA - filtrowanie po cechach towarów
« Odpowiedź #2 dnia: Wrzesień 15, 2017, 07:21:13 »
Dziekuję Serdecznie za zestawienie z cechą, ale mam problem

teoretycznie wkleiłem odpowiednie linijki ale wyskakuje mi błąd INVALID NAME  cht_IdCecha mysle ze chodzi o linijkę z kodem już filtrowania cechy.

select tw_Symbol [Symbol]
,tw_Nazwa [Nazwa]
,case tw_Zablokowany when 1 then CAST(0 as bit) else CAST(1 as bit) end [Aktywny]

,ISNULL(w.ilosc4, 0) [4 lata ilość]
,ISNULL(w.ilosc3, 0) [3 lata ilość]
,ISNULL(w.ilosc2, 0) [2 lata ilość]
,ISNULL(w.ilosc1, 0) [2016 ilość - poprzedni rok]
,ISNULL(w.ilosc0, 0) [2017 ilość- -biezacy rok]

,(select SUM(st_Stan)
  from tw_Stan
  where st_TowId = tw_Id
  and st_MagId in (1,6,7)) [STAN NA MAG]

,(select st_Stan
  from tw_Stan
  where st_TowId = tw_Id
  and st_MagId in (1)) [TAS]

,(select st_Stan
  from tw_Stan
  where st_TowId = tw_Id
  and st_MagId in (6)) [Vent s.c.]

,(select st_Stan
  from tw_Stan
  where st_TowId = tw_Id
  and st_MagId in (7)) [ZNUM s.c.]

,(select st_Stan
  from tw_Stan
  where st_TowId = tw_Id
  and st_MagId in (2)) [VENT AUTO]

,(select st_Stan
  from tw_Stan
  where st_TowId = tw_Id
  and st_MagId in (3)) [Znum]

,(select SUM(st_Stan)
  from tw_Stan
  where st_TowId = tw_Id
  and st_MagId in (4)) [Nomir]

from tw__Towar
left join
(
select ob_TowId
,SUM(case when dok_DataWyst between DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) - 0, 0) and DATEADD(DAY, -1, DATEADD(YEAR, DATEDIFF(YEAR, 0, DATEADD(YEAR, 1, GETDATE())) - 0, 0)) then ob_IloscMag else 0 end) ilosc0
,SUM(case when dok_DataWyst between DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) - 1, 0) and DATEADD(DAY, -1, DATEADD(YEAR, DATEDIFF(YEAR, 0, DATEADD(YEAR, 1,GETDATE())) - 1, 0)) then ob_IloscMag else 0 end) ilosc1
,SUM(case when dok_DataWyst between DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) - 2, 0) and DATEADD(DAY, -1, DATEADD(YEAR, DATEDIFF(YEAR, 0, DATEADD(YEAR, 1, GETDATE())) - 2, 0)) then ob_IloscMag else 0 end) ilosc2
,SUM(case when dok_DataWyst between DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) - 3, 0) and DATEADD(DAY, -1, DATEADD(YEAR, DATEDIFF(YEAR, 0, DATEADD(YEAR, 1, GETDATE())) - 3, 0)) then ob_IloscMag else 0 end) ilosc3
,SUM(case when dok_DataWyst between DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) - 4, 0) and DATEADD(DAY, -1, DATEADD(YEAR, DATEDIFF(YEAR, 0, DATEADD(YEAR, 1, GETDATE())) - 4, 0)) then ob_IloscMag else 0 end) ilosc4


from dok__Dokument
join dok_Pozycja on dok_Id = ob_DokMagId



INNER JOIN tw__Towar ON (ob_TowId = tw_Id)
INNER JOIN tw_Stan ON (tw_Id = st_TowId) AND (st_MagId = dok_MagId)
LEFT JOIN dbo.tw_CechaTw ON (tw_Id = cht_IdTowar)


where dok_Status <> 2

and dok_Typ in (13)

and dok_DataWyst >= DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) - 5, 0)
group by ob_TowId
) w on tw_Id = ob_TowId
where tw_Usuniety = 0
and
(
tw_Zablokowany = {LI:(dowolnym)#-1#aktywne#0#nieaktywne#1#:Towary o statusie:-1}
or
-1 = {LI:(dowolnym)#-1#aktywne#0#nieaktywne#1#:Towary o statusie:-1}
)
and
(select SUM(st_Stan)
 from tw_Stan
 where st_TowId = tw_Id
 and st_MagId in (1,2,3,4,6,7)) > {LI:(dowolnym)#-1#niezerowym#0:o stanie:-1}

AND (tw_IdGrupa IN ({CHL_DB: SELECT grt_Id, grt_Nazwa FROM sl_GrupaTw ORDER BY grt_Nazwa:Grupa Towarów:0:Nie wybrana}))

AND ( ISNULL(cht_IdCecha,0) = (
CASE WHEN {DB: SELECT ctw_Id = 0, ctw_Nazwa = 'Nie wybrana' UNION ALL SELECT ctw_Id, ctw_Nazwa FROM dbo.sl_CechaTw ORDER BY ctw_Nazwa:Cecha:0:Nie wybrana} = 0 THEN ISNULL(cht_IdCecha,0)
ELSE {DB: SELECT ctw_Id = 0, ctw_Nazwa = 'Nie wybrana' UNION ALL SELECT ctw_Id, ctw_Nazwa FROM dbo.sl_CechaTw ORDER BY ctw_Nazwa:Cecha:0:Nie wybrana} END))


Offline dkozlowski

  • Ekspert
  • *****
  • Wiadomości: 17087
  • Reputacja +798/-27
  • Wersja programu: GT/Navireo/nexo
Odp: ZESTAWIENIE STATYSTYKA - filtrowanie po cechach towarów
« Odpowiedź #3 dnia: Wrzesień 15, 2017, 10:17:37 »
teoretycznie wkleiłem odpowiednie linijki ale wyskakuje mi błąd INVALID NAME  cht_IdCecha mysle ze chodzi o linijkę z kodem już filtrowania cechy.

A dlaczego miałoby zadziałać, skoro odwołujesz się do tabeli cech towarów, a nigdzie nie dołączyłeś tej tabeli ? Ogólnie nie było to też dobry przykład, filtr powinien zwracać listę towarów przypisanych do wybranych cech, wtedy można dodać porównanie towaru z listą towarów.
Daniel, Białystok.

Offline myszuge

  • Użytkownik
  • **
  • Wiadomości: 90
  • Reputacja +0/-0
  • Wersja programu: subiekt gt 1.31
Odp: ZESTAWIENIE STATYSTYKA - filtrowanie po cechach towarów
« Odpowiedź #4 dnia: Wrzesień 15, 2017, 13:18:02 »
Powiem szczerze że czarna magia czytając odpowiedź. Ale cóż może uda mi się to jako zrozumieć, a jeśli można to jakiej tabeli muszę użyć ?

Offline myszuge

  • Użytkownik
  • **
  • Wiadomości: 90
  • Reputacja +0/-0
  • Wersja programu: subiekt gt 1.31
Odp: ZESTAWIENIE STATYSTYKA - filtrowanie po cechach towarów
« Odpowiedź #5 dnia: Wrzesień 15, 2017, 13:53:31 »
AND  tw_Id IN (SELECT cht_IdTowar FROM tw_CechaTw WHERE cht_IdCecha IN (42) )
wymysliłem prosty narazie patent na cechy towarów, wybrałem jedna która mnie interesuje, ale napisanie pola wyboru ...

Offline dkozlowski

  • Ekspert
  • *****
  • Wiadomości: 17087
  • Reputacja +798/-27
  • Wersja programu: GT/Navireo/nexo
Odp: ZESTAWIENIE STATYSTYKA - filtrowanie po cechach towarów
« Odpowiedź #6 dnia: Wrzesień 15, 2017, 18:35:22 »
No i ogólnie o to chodziło, teraz Id cechy trzeba zastąpić filtrem, który masz już przecież gotowy, zamieściłeś go w poprzedniej swojej wypowiedzi... Nie mnie polecam nie męczyć się z takimi tematami to nie ma miejsca na zgadywanie, trzeba po prostu wiedzieć co się robi...
Daniel, Białystok.

Forum Użytkownikow Subiekt GT

Odp: ZESTAWIENIE STATYSTYKA - filtrowanie po cechach towarów
« Odpowiedź #6 dnia: Wrzesień 15, 2017, 18:35:22 »