Autor Wątek: ZESTAWIENIE STATYSTYKA  (Przeczytany 1412 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
« dnia: Styczeń 10, 2017, 08:51:06 »
Witam, potrzebuję pomocy w edycji zestawienia, na lata 2017 i 2016 zliczanie towarów działa ale ni cholere nie działa na wcześniejsze lata to co wyróżniłem na kolor czerwony odpowiada za zliczanie w danych latach. Gdzie jest błąd w moim zestawieniu tz w tym zliczaniu. Nie dokońca rozumiem funkcę z datami i niewiem czy prawidłowo jest to zrobione. Proszę o pomoc.

Niestety wyroznienie na czerwono nie zadziałało.  Poniżej fragment kodu ktory za to odpowiada i gdzie jest błąd o ile to tutaj jest błąd.

,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]


oraz kod


,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



CAŁE ZESTAWIENIE PONIŻEJ

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, 21, 31, 37)) [Zrobione]

,(select st_Stan
  from tw_Stan
  where st_TowId = tw_Id
  and st_MagId in (1)) [Główny ilość]

,(select st_Stan
  from tw_Stan
  where st_TowId = tw_Id
  and st_MagId in (21)) [Lukas ilość]

,(select SUM(st_Stan)
  from tw_Stan
  where st_TowId = tw_Id
  and st_MagId in (31,166)) [Piotr Krzysiek ilość]

,(select st_Stan
  from tw_Stan
  where st_TowId = tw_Id
  and st_MagId in (37)) [Rysiu Szczytno ilość]

,(select st_Stan
  from tw_Stan
  where st_TowId = tw_Id
  and st_MagId in (13)) [Brudy]
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 (9, 11)
and dok_MagId = 1
and dok_DataWyst >= DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) - 1, 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, 21, 31, 37)) > {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})
)

Offline birds22

  • Ekspert
  • *****
  • Wiadomości: 9210
  • Reputacja +1304/-21
  • Wersja programu: Najnowsza
Odp: ZESTAWIENIE STATYSTYKA
« Odpowiedź #1 dnia: Styczeń 10, 2017, 09:03:22 »
A jak  ma zadziałać dla wcześniejszych lat skoro je ograniczyłeś:

and dok_DataWyst >= DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) - 1, 0)
Sławek, Zduńska Wola

Offline myszuge

  • Użytkownik
  • **
  • Wiadomości: 90
  • Reputacja +0/-0
  • Wersja programu: subiekt gt 1.31
Odp: ZESTAWIENIE STATYSTYKA
« Odpowiedź #2 dnia: Styczeń 10, 2017, 09:58:29 »
Dzięki, ja szukałem błędu w kodzie co zaznaczyłem, wyszukiwałem w google czy składni nie porąbałem a poniżej o tym zapomniałem całkowicie.

Dziękuje za pomoc. Temat rozwiązany.

Pozdrawiam
« Ostatnia zmiana: Styczeń 10, 2017, 10:07:44 wysłana przez myszuge »

Offline birds22

  • Ekspert
  • *****
  • Wiadomości: 9210
  • Reputacja +1304/-21
  • Wersja programu: Najnowsza
Odp: ZESTAWIENIE STATYSTYKA
« Odpowiedź #3 dnia: Styczeń 10, 2017, 10:07:16 »
Witam, rozumiem że cos porabałem w zapisie. Właśnie się doktoryzuje w google jak prawidłowo powinienem wpisać te ograniczenia dla dat. Mogłbyś mi podac jak prawidłowo ma to wyglądać?

Nie, nie podam Ci prawidłowej treści. Sam musisz do tego dojść. :) (taki już złośliwy jestem)

Co oznacza
dok_DataWyst >= DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) - 1, 0) ?

Oznacze, że zapytanie ma pobrać dokumenty, gdzie dok_DataWyst >= tego czegoś :)

Co to jest zatem:
DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) - 1, 0) ?


Rozbierz to na części pierwsze:

Select Getdate()

select DATEDIFF(YEAR, 0, GETDATE())

select DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) - 1, 0)


Powinieneś zrozumieć i umieć poprawić.


BTW
Doktoratu nie trzeba do tego
Sławek, Zduńska Wola

Forum Użytkownikow Subiekt GT

Odp: ZESTAWIENIE STATYSTYKA
« Odpowiedź #3 dnia: Styczeń 10, 2017, 10:07:16 »