Det kan være styklistelinier, salgspriser, kostpriser mv.
For eks. styklistelinier sørger M3 selv for, at skrive en 'Gyldig Til'-dato på en gammel linie, når der oprettes en ny, så man vil altid kun finde én linie, hvis man selekterer på en dato mellem 'Fra-' og 'Til-'datoerne.
Men for kostpriser er der ingen 'Gyldig Til'-dato, så her skal man selektere på den seneste 'Gyldig Fra'-dato.
Dette klarer M3-programmerne jo fint, men når der skal laves udtræk, så er det (kun) lidt bøvlet.
Eksemplet herunder viser, hvordan man kan finde en vares gældende kostpris pr. dags dato (her 2012-08-02).
select kofaci, koitno, kostrt, kopctp, kopcdt, kocsu3
from mchead t1
where kocono=1 and kofaci='001' and koitno='10000' and kocroc=0 and kopctp=3
and kopcdt in
(select max(kopcdt) from mchead t2
where t2.kocono=1 and t1.kofaci=t2.kofaci and t1.koitno=t2.koitno and t1.kostrt=t2.kostrt and t1.kocroc=t2.kocroc and t1.kopctp=t2.kopctp
and t2.kopcdt<=20120802
group by t2.kocono, t2.kofaci, t2.koitno, t2.kostrt)
Metoden er, at der laves en grupperet sub-select, hvor man finder den 'største' 'Fra-dato', som er mindre end den valgte dato, og så sørger for, at kalkuledatoen skal være lig denne.
Med denne simple SQL får man også oplysning om, hvilken dato denne gældende kostpris er kalkuleret.
(I eksemplet forudsættes det, at kostprisen findes i kalkuletype 3 og sumniveau 3, og vi finder kostprisen for vare '10000' på facility '001')
Ingen kommentarer:
Send en kommentar