Диапазон дат SQL Server - PullRequest
       2

Диапазон дат SQL Server

3 голосов
/ 14 марта 2012

У меня есть таблица SQL Server, которая содержит следующие даты (OpenDate, ClosedDate, WinnerAnnouncedDate).

У меня есть 3 строки для 3 разных категорий.

Я пытаюсь понять, как получить следующий сценарий:

Сегодня 14 марта. Я хочу выяснить, какую категорию объявил победитель, но следующая категория еще не началась.

Так что, если Row 1 имел OpenDate = 12th Feb, ClosedDate = 10th March, WinnerAnnounced = 12th March У строки 2 было OpenDate из 16th March Мне нужно найти строку 1, потому что объявлен победитель, но следующая категория еще не открылась.

Это может показаться немного запутанным, поэтому я буду готов разобраться, если потребуется.

Ответы [ 2 ]

1 голос
/ 14 марта 2012
SELECT TOP 1 WITH TIES *
FROM atable
WHERE WinnerAnnouncedDate <= GETDATE()
ORDER BY WinnerAnnouncedDate

WITH TIES вернет несколько строк, если несколько значений WinnerAnnouncedDate соответствуют условию и имеют одинаковое верхнее значение.

1 голос
/ 14 марта 2012

Я не на 100% понимаю, что вы говорите, но я думаю, что-то вроде: Найти последнего объявленного победителя в категориях, которые имеют дату начала раньше, чем сейчас.

Если это так, то что-то подобное может сработать для вас. Я предполагаю, что ваша таблица называется #dates, так как вы не включили имя таблицы

create table #dates (
    id int identity(1,1) primary key,
    openDate datetime,
    closedDate datetime,
    WinnerAnnouncedDate datetime
)

insert into #dates
values ('12 feb 2012', '10 march 2012', '13 march 2012')


insert into #dates
values ('12 feb 2012', '10 march 2012', null)

insert into #dates
values ('16 mar 2012', null, null)


select * 
from #dates
where id = (select max(id) from #dates where openDate <= getdate() and winnerAnnouncedDate is not null)


--drop table #dates
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...