====== SQL-Statements ====== Nachstehend sind Beispiele für SQL-Statements aufgeführt. Bei Abfragen über die csv-und Excel-Export können Variablen zur Verfügung gestellt werden, die vom Anwender vor dem Ausführen angegeben werden müssen. Diese Variablen sind mit <<...>> gekennzeichnet: <> bedeutet demnach, dass der Anwender für diese Abfrage einen Stichtag angeben muss. ===== Stammdatenlisten ===== ==== Artikelliste ==== select agr as artikelgruppe, art as artikelnummer, bez1 as bezeichnung, bme as mengeneinheit from arti where spkz = '0'; ==== Kundenliste ==== select deb.debnr as kundennr, fir1 as firma, ort from deb, adr where deb.adnr = adr.adnr order by fir1; ===== Lagerauswertungen ===== ==== Lagerbestand ==== select lbj.lort as lagerort, lbj.art as artikel, arti.bez1 as bezeichnung, sum(lbj.saldowert) as bestand from lbj, arti where lbj.art = arti.art and lbj.bdat <= <> and <> and <> group by lbj.lort, lbj.art, arti.bez1 having sum(lbj.saldowert) != 0 order by lbj.art, lbj.lort; ==== Lagerbewegungen ==== select lort as lagerort, bdat as datum, art as artikel, case when rknr_lfk is not null then 'Ausgangslieferung' else case when rknr_elfk is not null then 'Eingangslieferung' else case when rknr_aprk is not null then 'Produktion' else case when rknr_mlazu is not null then 'man. Lagerzugang' else 'man. Lagerabgang' end end end end as Vorgang, case when rknr_lfk is not null then rknr_lfk else case when rknr_elfk is not null then rknr_elfk else case when rknr_aprk is not null then rknr_aprk else case when rknr_mlazu is not null then rknr_mlazu else rknr_mlaab end end end end as Vorgangsnr, saldowert, lagereinheit from lbj where bdat between <> and <> and art = <> order by bdat; ==== Ladenhüter ==== select arti.art as artikel, arti.bez1 as bezeichnung, case when max(lbj.bdat) is null then 'keine Bewegung' else max(lbj.bdat) end as letzte_bewegung from arti left join lbj on arti.art = lbj.art where arti.art not in (select lbj.art from lbj where bdat::date >= current_date - <>) group by arti.art, arti.bez1 order by arti.art; ===== Umsatzauswertungen ===== ==== Umsatz nach Artikelgruppe ==== select arti.agr as Artikelgruppe, round(cast(sum(rep.mwsteuerbem) as numeric),2) as Umsatz from rep, rek, arti where rep.vnr_arti = arti.art and rep.renr = rek.renr and rek.rdat between <> and <> group by arti.agr order by arti.agr ==== Umsatz nach Kunde und Artikel ==== select rek.debnr, adr.fir1 as Kunde, adr.ort as Ort, rep.vnr_arti, rep.bez1, round(cast(sum(rep.mwsteuerbem) as numeric),2) as Umsatz from rep, rek, adr where rek.renr = rep.renr and rek.adnr = adr.adnr and rek.rdat between <> and <> and rek.debnr = <> group by rek.debnr, rep.vnr_arti, rep.bez1, adr.fir1, adr.ort order by rep.vnr_arti ==== Umsatz nach PLZ-Gebiet ==== select rep.vnr_arti as artikel, substr(adr.plz,1,2) as plz_gebiet, round(cast(sum(rep.mwsteuerbem) as numeric),2) as Umsatz from rep, atrp left join arti on atrp.vnr_arti = arti.art, atrk left join adr on atrk.adnr = adr.adnr where rep.apos = atrp.lfd and rep.atnr_atrk = atrk.atnr and rep.rdat between <> and <> and substr(adr.plz,1,2) between <> and <> group by 1,2 order by 1,2; ==== Umsatzverlauf nach Monaten pro Artikelgruppe ==== select to_char(date(rep.rdat), 'YYYY-MM') as "Monat", arti.agr as Artikelgruppe, round(cast(sum(rep.mwsteuerbem) as numeric),2) as Umsatz from rep, atrp, atrk, arti where rep.apos = atrp.lfd and rep.atnr_atrk = atrk.atnr and rep.vnr_arti = arti.art and rep.rdat between <> and <> and <> group by to_char(date(rep.rdat), 'YYYY-MM'), arti.agr order by arti.agr, to_char(date(rep.rdat), 'YYYY-MM') ==== Absatz pro Artikel im Zeitraum ==== select vnr_arti as artikel, sum(anz*aeumre) as menge, sum(mwsteuerbem) as umsatz from rep where vnr_arti between <> and <> and rdat between <> and <> group by vnr_arti; ===== Buchhaltungsauswertungen ===== ==== Kontobewegungen ==== select buchungsdatum, belegdatum, buchungsnr, buchungstext, belegtext, kontokorrent, saldowertmw from journal where auswkto = <> and buchungsdatum between <> and <> ==== Kontokorrentbewegungen ==== select buchungsdatum, belegdatum, buchungsnr, buchungstext, belegtext, kontokorrent, saldowertmw from journal where kontokorrent = <> and buchungsdatum between <> and <> order by buchungsdatum ==== OP-Liste Debitoren ==== select journal.kontokorrent as Debitor, journal.zuordopnr as beleg, buchungsbekopf.belegdatum, buchungsbekopf.extbelegnr as belegnr, buchungsbekopf.buchungstext, round(cast(sum(journal.saldowertmw) as numeric),2) as opbetrag from journal inner join buchungsbekopf on journal.zuordopnr = buchungsbekopf.buchungsnr where journal.buchungsdatum <= <> and auswkto = <> group by 1,2,3,4,5 having round(cast(sum(saldowertmw) as numeric),2) != 0 order by 1,3,4,2; ==== Saldenliste Kreditoren ==== select kontokorrent as kreditor, round(cast(sum(saldowertmw) as numeric),2) as saldo from journal where buchungsdatum <= <> and auswkto = <> group by kontokorrent having round(cast(sum(saldowertmw) as numeric),2) != 0 order by kontokorrent ==== Umsatzsteuerauswertung ==== select journaltemp.usvazeile, usvazeile.bezeichnung, auswkto as konto, kontorahmen.bezeichnung, round(cast(sum(journaltemp.saldowertmw) *-1 as numeric),2) as wert from journaltemp, kontorahmen, usvazeile where journaltemp.usvazeile = usvazeile.usvazeile and journaltemp.auswkto = kontorahmen.kontonummer and buchungsdatum between <> and <> and journaltemp.usvazeile is not null group by journaltemp.usvazeile, usvazeile.ordnung, usvazeile.bezeichnung, kontorahmen.bezeichnung, auswkto order by usvazeile.ordnung, journaltemp.usvazeile, auswkto; ==== Rechnungsausgangsliste ==== select rdat as rechnungsdatum, renr as rechnungsnr, mwsteuerbem as netto, mwsteuer as steuer, mwbrutto as brutto from rek where rdat between <> and <> order by 1,2; ===== Auftragsauswertungen ===== ==== nicht gedruckte Aufträge ==== select dat as datum, atnr as auftrag, debnr as debitor, mwsteuerbem as auftragswert from atrk where atnr not in (select numc from prnthist where pmask = 'ATRK' and scriptname = 'Auftrag drucken') order by 1,2; ==== offene Aufträge ==== select atrk.dat as auftragsdatum, atrk.atnr as auftragsnr, atrk.debnr as kunde, adr.fir1 as name, adr.ort as ort, atrp.mwsteuerbem/atrp.anz*(atrp.anz-atrp.abre) as auftragswert from atrp left join atrk on atrp.atnr = atrk.atnr left join adr on atrk.adnr = adr.adnr where (atrp.anz - atrp.abre != 0 or atrp.anz - atrp.agli != 0) and atrp.stat != 26473 and atrk.stat != 26473 order by 1,2;