2009-11-29 34 views
0

你好,我有以下結構的表:SQL查詢中使用不同的

sku, category, brand, product_name, inventory_count 

數據如下:

1001, car, honda, "honda car 1", 5 
1002, truck, honda, "honda truck 1", 6 
1003, car, ford, "ford car 1", 7 
1004, truck, ford, "ford truck 1", 8 
1005, bike, honda, "honda bike 5", 9 
1006, bike, ford, "ford bike 6", 10 

我使用下面的SQL查詢

select distinct category from products 

這將返回以下內容:

car 
truck 
bike 

這個偉大工程,

現在,我想每個類別以最大INVENTORY_COUNT

所以只是一個產品的例子,它返回的數據爲:

car, "ford car 1" 
truck, "ford truck 1" 
bike, "ford bike 6" 

什麼我會運行SQL查詢來獲取該數據?

我想用更大的INVENTORY_COUNT的項目爲每個類別

謝謝!

回答

4
SELECT category, MAX(product_name) 
FROM table 
GROUP BY 
    category 
+0

這似乎工作 謝謝! – duro 2009-11-29 10:26:28

+0

如果我有另一個名爲「INVENTORY_COUNT」的字段是一個數字 我如何在inventory_count中添加order,以便最大限度地INVENTORY_COUNT? – duro 2009-11-29 11:08:19

+0

我想: 選擇類別,MAX(PRODUCT_NAME)FROM表GROUP BY類別順序由inventory_count 但它不工作:( – duro 2009-11-29 11:41:11

1

即使你可以試試這個(SQL服務器2005+)

select x.category,x.product_name from(
select ROW_NUMBER() over(partition by category order by product_name) rn, 
t.* from @t t) x 
where x.rn = 1 

**category   product_name** 

bike    ford bike 6 
car    ford car 1 
truck    ford truck 1 

如果u使用x.rn = 2的輸出是

category   product_name 
bike    honda bike 5 
car   honda car 1 
truck   honda truck 1 
+0

我沒有函數ROW_NUMBER(),所以我。猜我沒有SQL服務器2005 + :( – duro 2009-11-29 11:20:19

1

從我假設名inventory_count來看該值不是唯一的,因此該類別中可能有多個產品具有相同的計數。因此,您不能在連接中使用計數作爲標識符,因此您需要一個將結果限制爲單個項目的子查詢。

select 
    p.category, 
    product_name = (
    select top 1 n.product_name 
    from products n 
    where n.category = p.category 
    order by n.inventory_count desc 
) 
from products p 
group by p.category