Sql server 使用distinct的SQL查询

Sql server 使用distinct的SQL查询,sql-server,Sql Server,您好,我有一个具有以下结构的表: 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 bi

您好,我有一个具有以下结构的表:

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
这很有效

现在,我只想为每一个具有最大库存数量的类别获取一个产品示例

以使其返回数据,如下所示:

car, "ford car 1"
truck, "ford truck 1"
bike, "ford bike 6"
我将运行什么SQL查询来获取该数据

我想要每个类别的库存量更大的物品

谢谢

即使您也可以尝试此操作(Sql Server 2005+)

SELECT category, MAX(product_name)
FROM table
GROUP BY
  category
如果u使用x.rn=2,则输出为

category         product_name
bike             honda bike 5
car           honda car 1
truck           honda truck 1
甚至你也可以试试这个(Sql Server 2005+)

如果u使用x.rn=2,则输出为

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

从名称
inventory\u 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

从名称
inventory\u 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

如果我有另一个名为“INVENTORY\u COUNT”的字段,该字段是一个数字,我如何在其中添加order by INVENTORY\u COUNT,以使其与最大库存\u COUNT对齐?我尝试了:从表组中按类别按库存\u COUNT顺序选择category,MAX(product\u name),但不起作用:(这不考虑最大库存数量。如果我有另一个名为“库存数量”的字段,该字段是一个数字,我如何按库存数量顺序将其添加到该字段中,以使其与最大库存数量对齐??我尝试了:选择类别,最大(产品名称)从表分组按类别按库存数量排序但不起作用:(这没有考虑最大库存数量。我没有函数行编号(),所以我想我没有sql server 2005+:(我没有函数行编号(),所以我想我没有sql server 2005+):(