如何比较列中的日期并根据最新日期,打印其他相应的列

时间:2017-04-03 14:47:19

标签: sql sql-server

我有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,价格为定价。

2 个答案:

答案 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))