Forum Użytkownikow Subiekt GT

InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty przez: peiro w Luty 14, 2019, 12:08:23

Tytuł: Zapytanie do sqla problem
Wiadomość wysłana przez: peiro w Luty 14, 2019, 12:08:23
Witam może ktoś mi powiedzieć, co nie tak jest z moim zapytaniem ?

,(select SUM(st_Stan - st_StanRez) FROM tw_stan WHERE st_TowId = ob_TowId and case(select SUM(st_Stan - st_StanRez) FROM tw_stan WHERE st_TowId = ob_TowId) > 0 then 0 end  GROUP BY st_TowId   / ((select SUM(ob_IloscMag * ob_Znak))  / (DATEDIFF (day,{D: Pokaż dokumenty z przedziału od:},{D: do}))) as 'Zostało na dni'

wcześniej wyglądało tak i działało

,(select SUM(st_Stan - st_StanRez) FROM tw_stan WHERE st_TowId = ob_TowId   GROUP BY st_TowId )  / ((select SUM(ob_IloscMag * ob_Znak))  / (DATEDIFF (day,{D: Pokaż dokumenty z przedziału od:},{D: do}))) as 'Zostało na dni'

natomiast musiałem dodać filtr żeby minusy zamieniało na 0 i użyłem case i tu już nie działa :(

z góry dzięki
Tytuł: Odp: Zapytanie do sqla problem
Wiadomość wysłana przez: yemet w Luty 14, 2019, 12:22:51
Pokaż całość.
Tytuł: Odp: Zapytanie do sqla problem
Wiadomość wysłana przez: peiro w Luty 14, 2019, 12:33:04
Proszę:

select
(select SUM(st_Stan - st_StanRez) FROM tw_stan WHERE st_TowId = ob_TowId   GROUP BY st_TowId )  / ((select SUM(ob_IloscMag * ob_Znak))  / (DATEDIFF (day,{D: Pokaż dokumenty z przedziału od:},{D: do}))) as 'Zostało na dni'
FROM dok__dokument
INNER JOIN dok_Pozycja on dok_Id=ob_DokMagId
INNER JOIN tw__Towar on ob_TowId = tw_Id
left join sl_GrupaTw on tw_IdGrupa = grt_id
WHERE
(
(dok_DataWyst BETWEEN {D: Pokaż dokumenty z przedziału od:} AND {D: do})
AND tw_Id IN ({LM:TW:Filtry Towaru:SELECT tw_id from tw__towar:(wszystkie)})
)
GROUP BY Tw_Symbol, tw_Nazwa, tw_JednMiary, ob_TowId, tw_PodstKodKresk, tw_IdGrupa, grt_Nazwa, tw_CzasDostawy
Tytuł: Odp: Zapytanie do sqla problem
Wiadomość wysłana przez: yemet w Luty 14, 2019, 12:43:30
Wywala mi błąd dzielenia przez zero. Wcześniej mogło działać bo nie trafiło na taki dokument.

Zobacz sobie co to za pozycje na dokumentach masz z zerowymi ilościami masz i np. CASE'm sobie dorób logikę na takie przypadki.
select * from dok_Pozycja where ob_IloscMag=0


Co to ma ogólnie robić bo tu nie ma żadnych warunków na typy dokumentów? I po co te udziwnione SELECTY w SELECT'cie? Takie cuda trudniej się pisze i czyta :)
Tytuł: Odp: Zapytanie do sqla problem
Wiadomość wysłana przez: peiro w Luty 14, 2019, 12:50:46
Ten warunek długi wylicza ile towaru pozostaje niejako na zapas ilościowo na dni biorąc pod uwagę sprzedaż na dzień okres i stany. I właśnie tylko chodzi mi o to jak w nim
SUM(st_Stan - st_StanRez) FROM tw_stan WHERE st_TowId = ob_TowId   GROUP BY st_TowId )  ..........................  w tym miejscu ustawić żeby minusy zamieniał na 0.
Tytuł: Odp: Zapytanie do sqla problem
Wiadomość wysłana przez: yemet w Luty 14, 2019, 13:18:53
A co to jest za warunek cudaczny ?  :o

INNER JOIN dok_Pozycja on dok_Id=ob_DokMagId
Tytuł: Odp: Zapytanie do sqla problem
Wiadomość wysłana przez: candy w Luty 14, 2019, 13:29:14
A co to jest za warunek cudaczny ?  :o

INNER JOIN dok_Pozycja on dok_Id=ob_DokMagId
To normalny, poprawny warunek na powiązanie nagłówka dokumentu magazynowego z jego pozycjami.
Tytuł: Odp: Zapytanie do sqla problem
Wiadomość wysłana przez: yemet w Luty 14, 2019, 13:32:10
A co to jest za warunek cudaczny ?  :o

INNER JOIN dok_Pozycja on dok_Id=ob_DokMagId
To normalny, poprawny warunek na powiązanie nagłówka dokumentu magazynowego z jego pozycjami.

O matko, źle to przeczytałem. Robiłem coś innego po drodze i mi się ubzdurało, że to identyfikator magazynu  ;D
Tytuł: Odp: Zapytanie do sqla problem
Wiadomość wysłana przez: peiro w Luty 14, 2019, 13:33:07
winno być INNER JOIN dok_Pozycja ON dok_Id = ob_DokHanId