从列中选择唯一值

时间:2019-04-09 10:08:44

标签: sql sql-server

我在数据库中有以下数据。

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进行各种操作,但无法获得所需的结果。

3 个答案:

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

Live Demo

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