Выберите уникальные значения из столбца - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть данные ниже в БД.

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 ]

1 голос
/ 09 апреля 2019

Вам нужно 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;
0 голосов
/ 09 апреля 2019

Если у вас есть отдельная таблица кодов, вы можете обнаружить, что 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;
0 голосов
/ 09 апреля 2019

использовать 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

Демонстрационная версия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...