我有一个包含两列Date
和User
的SQL表,并包含以下行:
**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
给定一个日期,我应该如何编写WHERE子句以返回该日期的用户列表,或者如果找不到该日期的用户用户,则返回下一个较早日期的用户列表。例如,如果给定日期为“ 2009-02-19 ”,则返回的用户列表应为威廉和 Abner 。
答案 0 :(得分:6)
SELECT User
FROM MyTable
WHERE MyDate = (SELECT MAX(MyDate) FROM MyTable WHERE MyDate <= '2009-02-19')
答案 1 :(得分:5)
SELECT [User] FROM myTable WHERE Date =
(SELECT Max(Date) FROM myTable WHERE Date <= '2009-02-19')
答案 2 :(得分:0)
SELECT *
FROM [MyTable] t
INNER JOIN
(
SELECT TOP 1 [Date]
FROM [MyTable]
WHERE [Date] >= @TargetDate
ORDER BY [Date]
) d ON t.[Date] = d.[Date]
答案 3 :(得分:0)
这样的事情:
select Name
from UnknownTable
where [Date] =
(select Max([Date])
from UnknownTable
where [Date] <= '2009-02-19')
这假设您的日期值没有时间组件。
答案 4 :(得分:-1)
你可以做这样的事情
选择TOP 2 [日期] ,[用户] FROM [LearningDatabase]。[dbo]。[用户] 在哪里[日期] = '07 / 15/2009' 或[日期]&lt; '07 / 15 / 2009' 的