STOKKODU,STOKADI,KULLANIM alanları var bu tabloda.Aşağıdaki kodla
stokkodu aynı olanları gruplayarak toplam kullanım miktarını öğreniyorum.Tabi kriterlerde var iki tarih arası filan ama onlarda problem olmadığından yazmadım koda.Asıl sorunum aşağıdaki kodda stok hareketlerinden toplamgiren-toplamcikan şeklinde bakiyeyide hesaplatıp bakiye-toplamsarfdan ihtiyacı almam lazım.şimdilik tabloyu taratıp bakiyeyi yazdırıyorum ama bence tek select de yapmalıyım bunu.
Kod: Tümünü seç
select m.stokkodu,m.stokadi,s.stokgrubu,s.birim,sum(kullanim)sarf from mrpmalz m,stoklar s where s.stokkodu=m.stokkodu group by m.stokkodu,m.stokadi,s.stokgrubu,s.birim
Kod: Tümünü seç
screen.Cursor:=crSQLWait;
mrprapor.close;
mrprapor.SelectSQL.Clear;
mrprapor.SelectSQL.Add('select m.stokkodu,m.stokadi,h.stokkodu,s.stokkodu,s.birim,s.aktar,s.stokgrubu,sum(m.kullanim)sarf,coalesce(sum(h.giris),0)-coalesce(sum(h.cikis),0)bakiye,sum(m.kullanim)-(coalesce(sum(h.giris),0)-coalesce(sum(h.cikis),0))IHTIYAC');
MRPrapor.SelectSQL.Add('from mrpmalz m,stoklar s,stokhrkt h where h.stokkodu is not null');
if pk.Text<>'' then mrprapor.SelectSQL.Add('and M.mrpkodu='+#39+(pk.Text)+#39);
if ogn.Text<>'' then mrprapor.SelectSQL.Add('and M.ogun='+#39+(ogn.Text)+#39);
if t1.Text<>'' then mrprapor.SelectSQL.Add('and M.tarih >='+#39+(T1.Text)+#39);
if t2.Text<>'' then mrprapor.SelectSQL.Add('and M.tarih <='+#39+(T2.Text)+#39);
if depoedit.Text<>'' then mrprapor.SelectSQL.Add('and h.cikdepokodu ='+#39+(depoedit.Text)+#39);
MRPrapor.SelectSQL.Add('and m.stokkodu=s.stokkodu and m.stokkodu=h.stokkodu');
mrprapor.SelectSQL.Add('group by m.stokkodu,m.stokadi,h.stokkodu,s.stokkodu,s.birim,s.aktar,s.stokgrubu');
mrprapor.SelectSQL.Add('having sum(m.kullanim)-(coalesce(sum(h.giris),0)-coalesce(sum(h.cikis),0))>0 ');
mrprapor.open;
screen.Cursor:=crdefault;