Der Code von "Ermittle_ArtPreis" ist nicht uninteressant um den Fehler zu finden
)
Ein direkter JOIN wäre ihmo am Besten.
Falls der Code in ERMITTLE_ARTPREIS sehr komplex ist, und du ihn auslagern möchtest, dann ist aus meiner Sicht eine eine UDF für diesen Zweck angebrachter.
Variante 1: (bei "relativ" wenigen Artikeln)
SQL-Code:
CREATE FUNCTION Ermittle_Artpreis
(
Zeitpukt DATETIME
)
RETURNS TABLE
AS
SELECT ID,ArtNr,Preis FROM ... bla
Das Ganze dann mit deinem äußeren SELECT Joinen.
Variante 2: (bei "relativ" vielen Artikeln)
SQL-Code:
FUNCTION Get_ARTPREIS
(
@ID INT,
@Zeitpukt DATETIME
)
RETURNS MONEY
AS
RETURN
SELECT TOP 1 Preis FROM ... bla
WHERE ID = @ID
AND
@Zeitpunkt BETWEEN Preis_Startdatum AND Preis_EndDatum
[/
sql]
verwenden:
SQL-Code:
SELECT ID,ArtNr,Preis FROM ... bla
SELECT ID, NR, BEZ, dbo.Get_ARTPREIS ('01.01.2006') FROM Artikel
WHERE ...
/ EDIT : UDF berbessert