对于以下情况,我应该如何在SQL Server中编写WHERE子句?

daw*_*der 3 sql sql-server

我有两列的SQL表DateUser,包含以下行:

    **Date        User**
    2009-02-20  Danny
    2009-02-20  Matthew
    2009-02-15  William
    2009-02-15  Abner
    2009-12-14  Joseph
    1900-01-01  Adam
    1900-01-01  Eve
Run Code Online (Sandbox Code Playgroud)

给定日期,我应该如何编写WHERE子句以返回该日期的用户列表,或者如果找不到该日期的用户用户,则返回下一个更早的日期的用户列表.例如,如果给定日期为" 2009-02-19 ",则返回的用户列表应为WilliamAbner.

cle*_*tus 6

SELECT User
FROM MyTable
WHERE MyDate = (SELECT MAX(MyDate) FROM MyTable WHERE MyDate <= '2009-02-19')
Run Code Online (Sandbox Code Playgroud)


Ant*_*nes 5

SELECT [User] FROM myTable WHERE Date =
  (SELECT Max(Date) FROM myTable WHERE Date <= '2009-02-19')
Run Code Online (Sandbox Code Playgroud)

  • 就像你需要rep cletus;) (2认同)