我目前正在执行此分组以检索最大日期:
SELECT A, MAX(B) FROM X GROUP BY A
这是完美的工作。但是,当我尝试检索第二高的值时,我完全迷失了。
如果有人有想法...
我目前正在执行此分组以检索最大日期:
SELECT A, MAX(B) FROM X GROUP BY A
这是完美的工作。但是,当我尝试检索第二高的值时,我完全迷失了。
如果有人有想法...
尝试这个:
SELECT X.A,
MAX(X.B)
FROM YourTable X
JOIN
(
SELECT
X1.A,
MAX(X1.B)
FROM YourTable X1
GROUP BY X1.A
) X1 ON X1.A = X.A
AND X.B < X1.B
GROUP BY X.A
基本上,这表示获得所有小于最大值的最大值。
ROW_NUMBER
您可以在cte中使用排名功能:
WITH CTE AS
(
SELECT A,
MaxB = MAX(B)OVER(PARTITION BY A),
RN = ROW_NUMBER() OVER (PARTITION BY A ORDER By B DESC)
FROM dbo.X
)
SELECT A, MaxB
FROM CTE
WHERE RN <= 2
这将返回每个组的两个最高值(如果这是您想要的)。
您的列相当模糊,但是如果 A 是 max_date 那么, B 是您希望排序的其他值,那么一种方法可能是:
SELECT A FROM X ORDER BY B DESC LIMIT 2
这将为您提供 2 行,首先显示第二高。