Forum Użytkownikow Subiekt GT
InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty przez: myszuge w 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
-
Tu masz zestawienie z cechą: http://www.forumsubiekta.pl/dodatki-zestawienia/zestawienie-stan-na-magazynie-plus-sprzedaz-danego-towaru/15/ (http://www.forumsubiekta.pl/dodatki-zestawienia/zestawienie-stan-na-magazynie-plus-sprzedaz-danego-towaru/15/)
-
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))
-
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.
-
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ć ?
-
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 ...
-
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...