Wie bereits in einem anderem Thread mitgeteilt, lässt sich dies mittels Lateral sehr leicht lösen.
Meist hat man ja ein "Gültig Ab" oder "Gültig Bis".
Folglich gibts 2 Varianten:
Theoretisch könnte man auch 2 Cross-Joins zusammen verwenden und per coalesce(b1.Preis, b2.Preis) prüfen:Code:select a.menge, b.preis, a.PreisDatum from AuftragsPosition a cross join lateral ( select Preis from PreisTabelle b where a.Artikel = b.Artikel and a.Preisdatum >= b.GueltigAb order by Artikel, GueltigAb asc fetch first 1 rows only ) b select a.menge, b.preis, a.PreisDatum from AuftragsPosition a cross join lateral ( select Preis from PreisTabelle b where a.Artikel = b.Artikel and a.Preisdatum <= b.GueltigBis order by Artikel, GueltigBis desc fetch first 1 rows only ) b
Wenn kein aktueller Preis (b1) dann nimm den letzten vorhandenen Preis (b2).
![[NEWSboard IBMi Forum]](images/duke/nblogo.gif)



Mit Zitat antworten
Bookmarks