2013-07-25 5 views
0

У меня есть набор записей, и я хочу сортировать эти записи по количеству элементов в группе.Сортировка записей на основе количества элементов на сервере SQL Server

The below image is a snapshot of the table

Я хочу, чтобы расположить записи таким образом, что продукты с максимальным количеством элементов находятся в верхней части, т.е. требуемого порядка PRODUCT_ID 3 это- (с 6), а затем PRODUCT_ID 1 (с 5), а последним будет Product_ID 2 (с 3 элементами).

Следующий запрос возвращает количество элементов с одним и тем же Product_ID, однако я хочу, чтобы были также упорядочены Item_Name, Item_Description и Item_Number.

Select Product_ID, Count(*) from Product group by Product_ID order by Count(*) DESC 

Я попробовал другой запрос следующим образом, но я знаю, что я неправильно где-то, что не дает желаемых результатов, и я не могу думать о возможном решении:

Select Product_ID, Item_Name, Item_Description, Item_Number from Product 
group by Product_ID,item_name,item_description,item_number 
order by COUNT(product_ID) 

Спасибо заранее за вашу помощь !!

ответ

4
Select Product_ID, Item_Name, Item_Description, Item_Number 
from Product 
order by COUNT(1) over (partition by Product_ID) desc 
+0

Удивительный, он работает как шарм. Спасибо! – pk188

0

Попробуйте использовать псевдоним:

Select Product_ID, Count(*) AS num_products from Product group by Product_ID order by num_products DESC; 
1

Я предполагаю, что вы хотите группе только ID, но вы хотите перечислить все другие поля, вам не нужно группе вообще если вы просто хочу заказать:

SELECT product_id, 
     item_name, 
     item_description, 
     item_number 
FROM product p1 
ORDER BY (SELECT Count(product_id) 
      FROM product p2 
      WHERE p1.product_id = p2.product_id) DESC 
+0

Да, вы правы. Мне не нужна группа, и запрос работает точно. – pk188

Смежные вопросы