我在数据库中有以下数据。
CODE Material Price Date
111 XYT 1 1/1/2019
111 SFH 4546 1/1/2019
444 XYT 4546 28/4/2019
676 TYT 563 28/9/2019
676 SFH 4546 1/1/2019
676 XYT 1 1/1/2019
我只需要从CODE列中的单个值或最高值及其在其余列中的相应数据即可。
需要的输出:
CODE Material Price Date
111 XYT 1 1/1/2019
444 XYT 4546 28/4/2019
676 TYT 563 28/9/2019
尝试使用DISTINCT进行各种操作,但无法获得所需的结果。
答案 0 :(得分:1)
您需要row_number()
:
select top (1) with ties t.*
from table t
order by row_number() over (partition by code order by date desc, price);
您还可以使用子查询:
select t.*
from (select t.*,
row_number() over (partition by code order by date desc, price) as seq
from table t
) t
where seq = 1;
答案 1 :(得分:0)
使用row_number()
select * from (
select * ,row_number() over(partition by code order by dateall desc, price) as t from tab) as ntab where t=1
答案 2 :(得分:0)
如果您有单独的代码表,则可能会发现apply
效果很好:
select t.*
from codes c cross apply
(select top (1) t.*
from t
where t.code = c.code
order by t.date desc
) t;