Gör man om det hela till StoredProcedures så blir det lite snabbare och enklare att hantera (man kan då ange valfritt datum när man vill veta aktuell prislista, vilket gör att man kan hantera framtida prisförändringar):
Kod:
CREATE PROCEDURE [dbo].[SenasteProduktPrisAlt1]
-- Add the parameters for the stored procedure here
@Datum datetime = GetDate
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
--declare @datum datetime
--set @datum = GETDATE()
SELECT PrisID, Artikelnummer, pris, prisdatum
FROM dbo.ProduktPris AS pp1
WHERE PrisDatum <= @Datum
AND
(
prisdatum =
(
SELECT DISTINCT MAX(prisdatum) AS prisdatum
FROM dbo.ProduktPris AS pp2
WHERE (Artikelnummer = pp1.Artikelnummer)
)
)
END
GO
-- Tester
declare @datum datetime
set @datum = GETDATE()
exec [dbo].[SenasteProduktPrisAlt1] @datum;
exec [dbo].[SenasteProduktPrisAlt1] '2011-12-15 23:59:59';
exec [dbo].[SenasteProduktPrisAlt1] '2011-12-18';
exec [dbo].[SenasteProduktPrisAlt1] '2011-12-18 23:59:59';
exec [dbo].[SenasteProduktPrisAlt1] '2011-12-21 23:59:59';
exec [dbo].[SenasteProduktPrisAlt1] '2011-12-24 23:59:59';