Как мне написать мое предложение WHERE в SQL Server для следующего случая? - PullRequest
3 голосов
/ 18 июля 2009

У меня есть таблица SQL с двумя столбцами Date и User и содержит следующие строки:

    **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 ', возвращаемый список пользователей должен быть Уильям и Абнер .

Ответы [ 5 ]

6 голосов
/ 18 июля 2009
SELECT User
FROM MyTable
WHERE MyDate = (SELECT MAX(MyDate) FROM MyTable WHERE MyDate <= '2009-02-19')
5 голосов
/ 18 июля 2009
SELECT [User] FROM myTable WHERE Date =
  (SELECT Max(Date) FROM myTable WHERE Date <= '2009-02-19')
0 голосов
/ 18 июля 2009

Вы могли бы сделать что-то вроде этого

ВЫБРАТЬ ТОП 2 [Дата] [Пользователь] FROM [LearningDatabase]. [Dbo]. [Users] ГДЕ [Дата] = '07 / 15/2009 ' ИЛИ [Дата] <'07 / 15/2009 '</p>

0 голосов
/ 18 июля 2009

Примерно так:

select Name
from UnknownTable
where [Date] = 
    (select Max([Date]) 
     from UnknownTable
     where [Date] <= '2009-02-19')

Предполагается, что для ваших значений даты нет временных компонентов.

0 голосов
/ 18 июля 2009
SELECT * 
FROM [MyTable] t
INNER JOIN
   ( 
      SELECT TOP 1 [Date]
      FROM [MyTable]
      WHERE [Date] >= @TargetDate
      ORDER BY [Date]
   ) d ON t.[Date] = d.[Date]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...