【发布时间】:2019-06-22 23:33:21
【问题描述】:
如果出现以下情况,则必须返回 Null:
- 表中少于 2 行
- 没有第二高的薪水,因为每个人的薪水都一样
我查找的所有内容似乎都是针对旧版本的 Sql Server
DECLARE @find int = (Select COUNT(*) from Employee);
IF (@find = 1)
select null as 'SecondHighest'
else
select Salary as 'SecondHighest'
from Employee
order by Salary desc
offset 1 rows fetch next 1 rows only;
如果少于 2 列,我已经设法返回 null,尽管我认为可能有更好的方法来做到这一点。
但是,我无法解决第二个问题:
“没有第二高的薪水,因为每个人的薪水都一样”
【问题讨论】:
-
您可以通过查询找到最高薪水,在子查询中找到低于最高薪水的薪水。如果没有第二高,我猜它会自动变成null。
-
@alx 不幸的是,它不会自动变为空,它只是空的(没有行)。我想要 1 行 null
-
您的意思是“少于 2 行”吗?
-
下面看我的回复,好像输出的正是你想要的。
标签: sql sql-server tsql