我有ProductId,PriceType,Price,FromDate列。
在此,产品ID是给予不同产品的ID列表,pricetype是不同价格的类别,如交易价格,批发价格等,价格是每种产品的货币价值。
目前,对于每个产品ID,有多种pricetypes& fromdates。 Click here for the image.
我想要一个最终输出,对于每个产品ID,根据最新的FromDate,每个价格类别的价格应该是唯一的。
示例,对于产品ID 221,有2个定价,价格和fromdate有2个不同的值。现在我的最终输出应该是产品ID为221,从2014年1月1日开始,价格为19.8,价格为定价。
答案 0 :(得分:0)
试试这个
;WITH temp AS
(
SELECT ProductId, PriceType, Price, t.FromDate , ROW_NUMBER() over(PARTITION BY ProductId, PriceType ORDER BY Fromdate DESC) AS RowIndex
FROM #ActualData
)
SELECT ProductId, PriceType, Price, FromDate
FROM temp t WHERE t.RowIndex = 1
答案 1 :(得分:0)
@ TriV的答案应该有效。这是另一种选择。您必须同时尝试这两种方式,以确定哪种方式对您的数据有更好的效果。
select t.ProductId, t.PriceType, t.Price, t.FromDate
from #temp1 t
where exists(select 1
from #temp1 t2
where t2.ProductId = t.ProductId
and t2.PriceType = t.PriceType
group by t2.ProductId, t2.PriceType
having t.FromDate = max(t2.fromDate))