2013-03-22 176 views
-1

这是我的初始计数查询和结果集。我只是不能解决如何让最大查询工作。SQL Group By By By By Count

查询

SELECT QM_CUST_CODE, QM_XX_REGION, COUNT(QM_QUOTE_NUM) as Quotes 
FROM QM (NOLOCK) 
WHERE QM_CUST_CODE in ('H-PAT001', 'H-ABI002') 
GROUP BY QM_CUST_CODE, QM_XX_REGION 

结果

QM_CUST_CODE QM_XX_REGION Quotes 
1 H-ABI002  0   1 
2 H-PAT001  0   3 
3 H-ABI002  1   397 
4 H-PAT001  1   1509 
5 H-PAT001  2   1 

--The问题 如何我只得到了行3和4回,因为这些是客户代码的区域有MAX的报价单号。

回答

0
WITH recordsList 
AS 
(
    SELECT QM_CUST_CODE, QM_XX_REGION, COUNT(QM_QUOTE_NUM) as Quotes, 
      DENSE_RANK() OVER (PARTITION BY QM_CUST_CODE 
           ORDER BY COUNT(QM_QUOTE_NUM) DESC) rn 
    FROM QM 
    WHERE QM_CUST_CODE in ('H-PAT001', 'H-ABI002') 
    GROUP BY QM_CUST_CODE, QM_XX_REGION 
) 
SELECT QM_CUST_CODE, QM_XX_REGION, Quotes 
FROM recordsList 
WHERE rn = 1 
+1

谢谢JW。我去灰色试图解决这个问题! – Bruce 2013-03-22 07:27:35

+0

不客气':D' – 2013-03-22 08:17:59

0

如果你只是想获得两行具有最高报价计算,然后试试这个:

Select Top 2 * From 
(
SELECT QM_CUST_CODE, QM_XX_REGION, COUNT(QM_QUOTE_NUM) as Quotes 
FROM QM 
WHERE QM_CUST_CODE in ('H-PAT001', 'H-ABI002') 
GROUP BY QM_CUST_CODE, QM_XX_REGION 
)tbl 
Order By Quotes Desc