Выберите X самых последних непоследовательных дней ценности данных - PullRequest
0 голосов
/ 21 ноября 2008

Кто-нибудь получил какое-либо представление о том, как выбрать x количество непоследовательных дней данных? Даты являются стандартным sql datetime. Так, например, я бы хотел выбрать данные за 5 последних дней, но между записями может быть много дней, поэтому просто выбор записей за 5 дней и более поздних не подойдет.

Ответы [ 3 ]

1 голос
/ 21 ноября 2008

Следуя подходу Тони Эндрюс предложил, вот способ сделать это в T-SQL:

SELECT
  Value,
  ValueDate
FROM
  Data
WHERE
  ValueDate >= 
  (
    SELECT 
      CONVERT(DATETIME, MIN(TruncatedDate))
    FROM 
      (
         SELECT DISTINCT TOP 5 
           CONVERT(VARCHAR, ValueDate, 102) TruncatedDate
         FROM 
           Event
         ORDER BY 
           TruncatedDate DESC
      ) d
  )
ORDER BY
  ValueDate DESC
0 голосов
/ 21 ноября 2008

Это должно сделать это и быть достаточно хорошим с точки зрения производительности. Вы не упомянули, как обрабатывать связи, поэтому вы можете добавить предложение WITH TIES, если вам нужно это сделать.

SELECT TOP (@number_to_return)
     *   -- Write out your columns here
FROM
     dbo.MyTable
ORDER BY
     MyDateColumn DESC
0 голосов
/ 21 ноября 2008

Я не знаю синтаксис SQL Server, но вам нужно:

1) Выберите даты (с урезанным компонентом времени) в порядке убывания

2) Снять верх 5

3) Получить 5-е значение

4) Выберите данные, где дата / время> = 5-е значение

Что-то вроде этого "псевдо-SQL":

select *
from data
where datetime >=
( select top 1 date
  from
  ( select top 5 date from
    ( select truncated(datetime) as date
      from data
      order by truncated(datetime) desc
    )
    order by date
  )
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...