我有以下选择结果
代码价格年份
1 200 2013年
1 100 2012
2 250 2011年
2 275 2012年
2 300 2010年
但我希望通过一个额外的列来跟踪这样的事情,该列根据最大年份保持价格,
代码价格年度费用
1 200 2013 200
1 100 2012 200
2 250 2011 275
2 275 2012 275
2 300 2010 275
对不起英语不好以及提出这个问题的错误方法。
答案 0 :(得分:1)
尝试这样的事情:
SELECT T1.Code, T1.Price, T1.Year, T2.Price
FROM Table T1
INNER JOIN Table T2 ON T1.Code = T2.Code AND
T2.Year = (SELECT MAX(Year) FROM Table WHERE Table.Code = T2.Code)
答案 1 :(得分:1)
您可以使用cross apply
和select top 1 ... order by
:
select Code, Price, Year, ExPrice
from TableName T
cross apply (
select top 1 Price
from TableName
where Code = T.Code
order by Year desc
) p(ExPrice)
或row_number
和join
(无论您喜欢什么):
;with cte as (
select Code, Price as ExPrice, rn = row_number() over (partition by Code order by Year desc)
from TableName
)
select T.Code, Price, Year, ExPrice
from TableName T
join cte on cte.Code = T.Code and cte.rn = 1