如何在SQL Server中为以下情况编写我的WHERE子句?
问题描述:
我有两列Date
和User
SQL表,其中包含以下行:如何在SQL Server中为以下情况编写我的WHERE子句?
**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',则返回的用户列表应该是William和Abner。
答
SELECT User
FROM MyTable
WHERE MyDate = (SELECT MAX(MyDate) FROM MyTable WHERE MyDate <= '2009-02-19')
答
SELECT *
FROM [MyTable] t
INNER JOIN
(
SELECT TOP 1 [Date]
FROM [MyTable]
WHERE [Date] >= @TargetDate
ORDER BY [Date]
) d ON t.[Date] = d.[Date]
答
SELECT [User] FROM myTable WHERE Date =
(SELECT Max(Date) FROM myTable WHERE Date <= '2009-02-19')
+0
当我之前写了完全相同的东西时,这会如何被投票? *划痕头* – cletus 2009-07-18 13:49:08
答
事情是这样的:
select Name
from UnknownTable
where [Date] =
(select Max([Date])
from UnknownTable
where [Date] <= '2009-02-19')
这是假设没有时间部件您的日期值。
答
你可以做这样的事情
SELECT TOP 2 [日期] ,[用户] FROM [LearningDatabase] [DBO]。[用户] WHERE [日期] = '07 /2009分之15 ' 或[日期] < '07/15/2009' 的
你有一个额外的)......它应该是 其中date =(SELECT MAX(指明MyDate)FROM MyTable的WHERE指明MyDate 2009-07-18 13:45:45
+1只是因为它有如此辉煌的答案。 :P – AnthonyWJones 2009-07-18 21:57:12