2013-03-22 198 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