-1

这是我的初始计数查询和结果集。我只是无法弄清楚如何让最大查询工作。

查询

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

--问题我如何只返回第 3 行和第 4 行,因为这些是按地区划分的客户代码,其报价数量最多。

4

2 回答 2

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
于 2013-03-22T06:53:47.400 回答
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
于 2013-03-22T07:04:22.853 回答