按名称排序sql查询

按名称排序sql查询,sql,sql-server-2008,nopcommerce,Sql,Sql Server 2008,Nopcommerce,我有一个查询,我想稍微调整一下,以显示不同的信息。 目前,我的查询获取所有订单,其中产品的排名由转化率最高的订单决定。 以下是查询: SELECT nopv.ProductVariantID, COUNT(nopv.ProductVariantID), p.ProductId, c.CategoryID, c.Name FROM Nop_OrderProductVariant nopv INNER JOIN Nop_ProductVariant npv ON nopv.ProductVar

我有一个查询,我想稍微调整一下,以显示不同的信息。 目前,我的查询获取所有订单,其中产品的排名由转化率最高的订单决定。 以下是查询:

   SELECT nopv.ProductVariantID, COUNT(nopv.ProductVariantID), p.ProductId, c.CategoryID, c.Name FROM Nop_OrderProductVariant nopv
INNER JOIN Nop_ProductVariant npv
ON nopv.ProductVariantID = npv.ProductVariantId
INNER JOIN Nop_Product p
ON npv.ProductID = p.ProductId
INNER JOIN Nop_Product_Category_Mapping npcm
ON p.ProductId = npcm.ProductID
INNER JOIN Nop_Category c 
ON npcm.CategoryID = c.CategoryID
GROUP BY nopv.ProductVariantID, p.ProductId, c.CategoryID, c.Name
HAVING COUNT(*) > 0
ORDER BY COUNT(nopv.ProductVariantID) DESC
结果是:

我希望每个类别只能有一次,例如“程序员和模块”类别应该只有一条记录,包含该类别中所有ProductVariantID的总和。第一个字段也可以避免,因为如果有多个ProductVariant,则查询只需要显示一个。我真正需要的是每个类别和类别的计数。
提前谢谢,拉齐亚尔

我想问题是你的
小组成员

GROUP BY nopv.ProductVariantID, p.ProductId, c.CategoryID, c.Name
尝试:

然后对您的
选择进行所需的任何更改
,以使其正常工作

比如说:

SELECT COUNT(nopv.ProductVariantID), c.CategoryID, c.Name
FROM Nop_OrderProductVariant nopv
INNER JOIN Nop_ProductVariant npv
ON nopv.ProductVariantID = npv.ProductVariantId
INNER JOIN Nop_Product p
ON npv.ProductID = p.ProductId
INNER JOIN Nop_Product_Category_Mapping npcm
ON p.ProductId = npcm.ProductID
INNER JOIN Nop_Category c 
ON npcm.CategoryID = c.CategoryID
GROUP BY c.CategoryID, c.Name
HAVING COUNT(*) > 0
ORDER BY COUNT(nopv.ProductVariantID) DESC

我认为问题在于你的
小组成员

GROUP BY nopv.ProductVariantID, p.ProductId, c.CategoryID, c.Name
尝试:

然后对您的
选择进行所需的任何更改
,以使其正常工作

比如说:

SELECT COUNT(nopv.ProductVariantID), c.CategoryID, c.Name
FROM Nop_OrderProductVariant nopv
INNER JOIN Nop_ProductVariant npv
ON nopv.ProductVariantID = npv.ProductVariantId
INNER JOIN Nop_Product p
ON npv.ProductID = p.ProductId
INNER JOIN Nop_Product_Category_Mapping npcm
ON p.ProductId = npcm.ProductID
INNER JOIN Nop_Category c 
ON npcm.CategoryID = c.CategoryID
GROUP BY c.CategoryID, c.Name
HAVING COUNT(*) > 0
ORDER BY COUNT(nopv.ProductVariantID) DESC

只需从select和Group By中删除变量和ProductID

   SELECT
     COUNT(nopv.ProductVariantID) ,
     c.CategoryID ,
     c.Name
   FROM
     Nop_OrderProductVariant nopv
   INNER JOIN Nop_ProductVariant npv
   ON
     nopv.ProductVariantID = npv.ProductVariantId
   INNER JOIN Nop_Product p
   ON
     npv.ProductID = p.ProductId
   INNER JOIN Nop_Product_Category_Mapping npcm
   ON
     p.ProductId = npcm.ProductID
   INNER JOIN Nop_Category c
   ON
     npcm.CategoryID = c.CategoryID
   GROUP BY
     c.CategoryID ,
     c.Name
   HAVING
     COUNT(*) > 0
   ORDER BY
     COUNT(nopv.ProductVariantID) DESC

只需从select和Group By中删除变量和ProductID

   SELECT
     COUNT(nopv.ProductVariantID) ,
     c.CategoryID ,
     c.Name
   FROM
     Nop_OrderProductVariant nopv
   INNER JOIN Nop_ProductVariant npv
   ON
     nopv.ProductVariantID = npv.ProductVariantId
   INNER JOIN Nop_Product p
   ON
     npv.ProductID = p.ProductId
   INNER JOIN Nop_Product_Category_Mapping npcm
   ON
     p.ProductId = npcm.ProductID
   INNER JOIN Nop_Category c
   ON
     npcm.CategoryID = c.CategoryID
   GROUP BY
     c.CategoryID ,
     c.Name
   HAVING
     COUNT(*) > 0
   ORDER BY
     COUNT(nopv.ProductVariantID) DESC

查询与结果集不匹配。那是什么(没有列名)?@StingyJack查询已更新,很抱歉您的问题主题与内容不匹配。您是否需要更改排序?您是否可以显示您希望结果是什么样子,而不是试图描述它?例如,如果您只希望程序员和模块有一行,那么您希望其他列是什么?查询与结果集不匹配。那是什么(没有列名)?@StingyJack查询已更新,很抱歉您的问题主题与内容不匹配。您是否需要更改排序?您是否可以显示您希望结果是什么样子,而不是试图描述它?例如,如果您只希望程序员和模块有一行,那么您希望其他列是什么?谢谢您的回答,您和@JamieF的答案都是正确的,但您的速度更快。谢谢您的回答,您和@JamieF的答案都是正确的,但您的速度更快。