इसे आजमाएं:
;WITH CurrentPrice AS
(
SELECT productid,max(Date) AS Date
FROM productprice
WHERE date < @DateIn
GROUP BY productid
)
select
p.ProductName,
pp.Price,
pp.Date,
from product p
inner join CurrentPrice pa on p.productid = pa.productid
inner join productprice pp on pa.productid = pp.productid AND pa.Date=pp.Date
where p.producttype = 'OnSale'
संपादित करें ओपी की टिप्पणी के आधार पर:
मुझे लगता है कि सीटीई के साथ उपरोक्त क्वेरी में वही क्वेरी प्लान होगा जो @Remus Rusanu से व्युत्पन्न तालिका संस्करण
हालांकि, अगर productprice
तालिका बड़ी है, आप इसे "OnSale
. द्वारा फ़िल्टर करके कम करना चाह सकते हैं "यहां पसंद करें:
;WITH CurrentPrice AS
(
select
p.productid,
MAX(pp.Date) AS Date
from product p
inner join productprice pp on pa.productid = pp.productid
where p.producttype = 'OnSale' AND pp.date < @DateIn
GROUP BY productid
)
select
p.ProductName,
pp.Price,
pp.Date,
from CurrentPrice pa
inner join product p on pa.productid = p.productid
inner join productprice pp on pa.productid = pp.productid AND pa.Date=pp.Date
where p.producttype = 'OnSale'