Posts
308
Comments
104
Trackbacks
4
SQL-Aufgabe: aktuelle Preise ermitteln

Zu einem Artikel gibt es zu verschiedenen Monaten verschiedene Preise. Die Artikeldaten stehen in der Tabelle Artikel, die verschiedenen Preise in der Tabelle Artikelpreise.

Mit dem folgenden Select lassen sich die heute gültigen Preise ermitteln:

DECLARE @PriceDate AS DATETIME
SET @PriceDate = GETDATE()

SELECT * FROM Artikel
INNER JOIN Artikelpreise ON Artikelpreise.ArtikelGUID=Artikel.GUID
WHERE

(
-- Get the current Entry
Artikelpreise.ValidFrom=
  (CASE WHEN
    (SELECT TOP 1 ValidFrom FROM Artikelpreise
    WHERE ValidFrom<=@PriceDate
    AND Artikelpreise.ArtikelGUID=Artikel.GUID
    ORDER BY ValidFrom DESC) IS NULL
THEN
-- There is only (maybe) a valid Price in the Future. Take it.
    (SELECT TOP 1 ValidFrom FROM Artikelpreise
    WHERE Artikelpreise.ArtikelGUID=Artikel.GUID
    ORDER BY ValidFrom DESC)
ELSE
-- Take the current found Price
    (SELECT TOP 1 ValidFrom FROM Artikelpreise
    WHERE ValidFrom<=@PriceDate
    AND Artikelpreise.ArtikelGUID=Artikel.GUID
    ORDER BY ValidFrom DESC)
END)
-- or no Price at all has been found
OR Artikelpreise.ValidFrom IS NULL
)

posted on Thursday, May 08, 2008 8:41 AM Print
Comments
No comments posted yet.

Post Comment

Title *
Name *
Email
Url
Comment *  
Please add 6 and 7 and type the answer here: