SELECT TOP 2 MAX Value Group By SQL

Ham*_*teu 4 sql t-sql sql-server group-by sql-server-2014

我有下表:

-----------------------------------------
xDate        xItem       xCount
-----------------------------------------
2018-01-01   A           100
2018-01-01   B           200
2018-01-01   D           500
2018-01-02   C           200
2018-01-02   E           800
Run Code Online (Sandbox Code Playgroud)

我想在 xCount 字段的 MAX 值上为每个日期选择 TOP 2 值。所以,结果应该是:

-----------------------------------------
xDate        xItem      xCount
-----------------------------------------
2018-01-01   D          500
2018-01-01   B          200
2018-01-02   E          800
2018-01-02   C          200
Run Code Online (Sandbox Code Playgroud)

有没有人对此案有想法?
干杯,

D-S*_*hih 5

您可以尝试使用RANK窗口函数,如果有更多的两行相同,xCount那么您想要获得它们。

您可以尝试使用dense_rank代替RANK

SELECT xDate,xItem,xCount
FROM (
    SELECT *,RANK() OVER(PARTITION BY xDate ORDER BY xCount DESC) rn
    FROM T
) t1
WHERE t1.rn <= 2
Run Code Online (Sandbox Code Playgroud)