0

所以我有下表:

 Age    Name    School
 22     x       ryerson
 31     y       york
 14     z       U of T

我想写一个查询结果如下:

  Age  Name School(of the next-youngest person)     
  22    x    U  of T
  31    y    ryerson
  14    z    null

在不创建另一个函数或将参数传递给另一个函数的情况下,我将如何编写此查询?我正在使用 SQL Server。

4

2 回答 2

3

不知道为什么你不能使用MAX. 无论如何,这应该这样做:

SELECT A.Age, A.Name, B.School
FROM YourTable A
OUTER APPLY (   SELECT TOP 1 School
                FROM YourTable
                WHERE Age < A.Age
                ORDER BY Age DESC) B
于 2012-08-09T21:51:54.507 回答
1

您可以使用子查询:

SELECT o.Age, o.Name,
    (SELECT TOP 1 c.School
    FROM Students c
    WHERE c.Age < o.Age
    ORDER BY c.Age DESC) as school
FROM Students o
于 2012-08-09T21:57:08.127 回答