我目前正在执行此分组以检索最大日期:
SELECT A, MAX(B) FROM X GROUP BY A
这非常有效。但是,当我尝试检索第二个最高值时,我完全迷失了。
如果有人有想法......
答案 0 :(得分:1)
试试这个:
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
基本上这表示获得所有小于最大值的最大值
答案 1 :(得分:0)
您可以在cte中使用排名功能ROW_NUMBER
:
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
这将返回每个组的两个最高值(如果这是你想要的)。
答案 2 :(得分:0)
你的列是相当模糊的,但如果A是max_date,那么B是你想要排序的其他值,那么一种方法可以是:
SELECT A FROM X ORDER BY B DESC LIMIT 2
这将为您提供2行,其中第二个最高显示。