编写一个select语句,用于比较同一列中的信息,而不创建单独的函数

时间:2012-08-09 21:25:00

标签: sql sql-server-2008

所以我有下表:

 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。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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