如何在sql中按客户分类查找最大产品id?

如何在sql中按客户分类查找最大产品id?,sql,sql-server,group-by,max,Sql,Sql Server,Group By,Max,这里有客户id和最大订单数量,如何获得最大订单数量的productid列以及customerid和maxorderqty列 数据库:冒险作品 使用的表:SalesOreReader、salesorderdetails 选择customerid, 最大总数量 从选择customerid, Sumorderqty作为Totalqty, productid作为pdtid 来自sales.salesorderheader a 内部连接sales.salesorderdetail b 在a.salesor

这里有客户id和最大订单数量,如何获得最大订单数量的productid列以及customerid和maxorderqty列

数据库:冒险作品 使用的表:SalesOreReader、salesorderdetails

选择customerid, 最大总数量 从选择customerid, Sumorderqty作为Totalqty, productid作为pdtid 来自sales.salesorderheader a 内部连接sales.salesorderdetail b 在a.salesorderid=b.salesorderid上 按客户ID分组, 产品 其中customerid=29825 按客户ID分组
如果您对查找单个记录感兴趣,可以使用以下内容:

SELECT TOP(1) CustomerID, max(totalqty) AS maxqty, pdtid
FROM
(
  SELECT customerid, Sum(orderqty) AS Totalqty, productid AS pdtid
  FROM   sales.salesorderheader a
    INNER JOIN sales.salesorderdetail b
      ON a.salesorderid = b.salesorderid
  GROUP  BY customerid, productid
) A
WHERE CustomerID=29825
GROUP BY CustomerID, pdtid
ORDER BY max(totalqty) DESC
但是。。。如果要查找具有相同排名的多个记录,请使用以下命令:

SELECT *
FROM 
(
  SELECT RANK() OVER(ORDER BY max(totalqty) DESC) rnk, CustomerID, max(totalqty) AS maxqty, pdtid
  FROM
  (
    SELECT customerid, Sum(orderqty) AS Totalqty, productid AS pdtid
    FROM   sales.salesorderheader a
      INNER JOIN sales.salesorderdetail b
        ON a.salesorderid = b.salesorderid
    GROUP  BY customerid, productid
  ) A
  WHERE CustomerID=29825
  GROUP BY CustomerID, pdtid
) B
WHERE rnk = 1

另一种方法是再次“加入”帆船细节

嘿,谢谢,伙计,但是我想要的只是maxorder对应的产品id,我已经计算出了客户的maxqty,但是我想包括产品id,如果我选择产品,我需要使用分组,这将带来不同的结果,我能做些什么吗。对不起,你尝试过上面的查询吗?看起来,你没有。请看这里:。结果与您的完全相同,并且包含productid。嗨!由于您是新来的,我想请您提供有关数据库的更多详细信息。如果您能更全面地概述表的外观,这将对贡献者有所帮助。提供一个最小的工作示例总是很有帮助的,因此在这里,最好给出一个示例,当您用少量数据填充表时,表是什么样子的。由于您已经提供了一个您尝试过的查询,如果您添加了查询当前生成的输出以及您期望它生成的输出,这将非常有用。