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)
有没有人对此案有想法?
干杯,
您可以尝试使用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)