2

次の選択結果があります

コード 価格 年
1 200 2013
1 100 2012
2 250 2011
2 275 2012
2 300 2010

しかし、最大年に基づいて価格を保持する追加の列を1つ追加して、このようなものをフォローしたいと思います。

コード 価格 年 ExPrice
1 200 2013 200
1 100 2012 200
2 250 2011 275
2 275 2012 275
2 300 2010 275

英語が下手で、この質問の仕方が間違っていて申し訳ありません。

4

2 に答える 2

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

SQLFiddle サンプル

于 2013-08-23T13:00:33.853 に答える