Выберите лучшие продукты на основе отдельного столбца - PullRequest
1 голос
/ 11 сентября 2011

Я хотел бы написать запрос SQL Server 2008, который выбирает самые разные продукты по идентификатору бренда, упорядоченному по последней дате, опубликованной в следующей таблице:

dbo.Products
ProductId, BrandId, PublishedOn

Содержание таблицы:

1, 1, 2011-01-01
2, 2, 2011-01-01
3, 3, 2011-01-01
4, 1, 2011-01-09
5, 1, 2011-01-10
6, 2, 2011-01-10

Вывод, который я ищу:

6, 2, 2011-01-10
5, 1, 2011-01-10
3, 3, 2011-01-01

Кто-нибудь знает, как этого можно достичь?

Извиняюсь за неправильное название, но я не совсем понял, как это сформулировать.

1 Ответ

2 голосов
/ 11 сентября 2011

Похоже, вы хотите самую последнюю строку для каждого BrandId в соответствии с PublishedOn?

;WITH T
     AS (SELECT *,
                ROW_NUMBER() OVER (PARTITION BY BrandId 
                                       ORDER BY PublishedOn DESC) AS RN
         FROM   dbo.Products)
SELECT ProductId,
       BrandId,
       PublishedOn
FROM   T
WHERE  RN = 1  
...