Может быть, вам следует использовать DENSE_RANK
.
SELECT *
FROM (
SELECT
[Salary],
(DENSE_RANK()
OVER
(
ORDER BY [Salary] DESC)) AS rnk
FROM [Table1]
GROUP BY [Num]
) AS A
WHERE A.rnk = 2
Попробуйте что-то вроде:
SELECT TOP 1 compensation FROM (
SELECT TOP 2 compensation FROM employees
ORDER BY compensation DESC
) AS em ORDER BY compensation ASC
по сути:
Если зарплаты не различимы, вы можете использовать Выберите отчетливую вершину ...
вместо этого.
Попробуйте следующее:
SELECT
salary,
employeeid
FROM
employees
ORDER BY
salary DESC
LIMIT 2
Тогда просто возьмите вторую строку.
Попробуйте следующее:
SELECT max(salary)
FROM emptable
WHERE salary < (SELECT max(salary)
FROM emptable);