如何根据年和月进行排名?

Lia*_*san 3 sql sql-server ranking dense-rank

我正在尝试根据年和月确定排名。我有类似的记录

产品展示

ProdID  Years  Months  Quantity
--------------------------------
1652    2018    10         2    
1010    2018    9          2    
2236    2018    10         2    
2236    2018    10         2    
1445    2019    5          2    
1789    2019    12         2    
1232    2018    12         2    
Run Code Online (Sandbox Code Playgroud)

我尝试了以下查询

SELECT
    ProdID, Years, Months, Quantity,
    DENSE_RANK()OVER (Partition By Years Order By Months) Ranks
FROM Products
Run Code Online (Sandbox Code Playgroud)

显然,结果将是

ProdID  Years  Months  Quantity   Ranks
---------------------------------------
1010    2018    9          2       1
1652    2018    10         2       2 
2236    2018    10         2       2
2236    2018    10         2       2
1232    2018    12         2       3
1445    2019    5          2       1
1789    2019    12         2       2
Run Code Online (Sandbox Code Playgroud)

期望

ProdID  Years  Months  Quantity   Ranks
---------------------------------------
1010    2018    9          2       1
1652    2018    10         2       2 
2236    2018    10         2       2
2236    2018    10         2       2
1232    2018    12         2       3
1232    2018    12         2       3
1445    2019    5          2       4
1789    2019    12         2       5
Run Code Online (Sandbox Code Playgroud)

Ank*_*pai 7

您需要从查询中删除partition by子句。只需使用order by子句即可。

SELECT ProdID, Years, Months, Quantity,
DENSE_RANK()OVER (Order By Years, Months) Ranks
FROM Products
Run Code Online (Sandbox Code Playgroud)