假设我有一个如下表:
PK Code Value
1 A 200
2 A 300
3 A 25
4 A 75
5 A 50
6 A 15
7 A 300
8 A 75
Run Code Online (Sandbox Code Playgroud)
如何获得代码= A的前4个最高值的值(即只想要300 + 300 + 200 + 75的总和)
谢谢
Mar*_*ith 11
您可以使用派生表或公用表表达式来获得前4个SUM.
SELECT SUM(Value) As Top4Sum
FROM
(
SELECT TOP (4) Value
FROM YourTable
WHERE Code = 'A'
ORDER BY Value DESC
) T
Run Code Online (Sandbox Code Playgroud)
如果您想要SUM的TOP 4每一个Code你可以做
;WITH CTE
AS (SELECT *,
ROW_NUMBER() OVER (PARTITION BY Code ORDER BY Value DESC) RN
FROM YourTable)
SELECT Code,
SUM(Value)
FROM CTE
WHERE RN <= 4
GROUP BY Code
Run Code Online (Sandbox Code Playgroud)