сделать запрос SELECT добавить записи вне моих ограничений WHERE - PullRequest
0 голосов
/ 26 января 2020

Мне трудно описать в заголовке.

Проблема в том, что мне нужно выбрать записи между 2 датами, НО мне нужно включить одну запись до первой даты (которую я не делаю ' не знаю, какая у него дата)

чтобы не сказать, что у меня есть записи по адресу:

  • 15-12-2019
  • 15-12-2019
  • 16-12-2019
  • 01-01-2020
  • 05-01-2020
  • 10-01-2020
  • 15-01-2020
  • 17-01-2020

Мне нужно сделать SELECT для отчета между 01-01-2020 and 10-01-2020, но фактический набор записей также должен включать 16-12-2019, давайте назовем его PADDING результаты с еще 1 записью.

Есть идеи?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 26 января 2020

Если бы у вас был индекс, который вывел на вашу дату, это также сработало бы:

CREATE TABLE #data (ID int, dt date)

INSERT INTO #data VALUES(1,'12-15-2019')
INSERT INTO #data VALUES(2,'12-15-2019')
INSERT INTO #data VALUES(3,'12-16-2019')
INSERT INTO #data VALUES(4,'01-01-2020')
INSERT INTO #data VALUES(5,'01-05-2020')
INSERT INTO #data VALUES(6,'01-10-2020')
INSERT INTO #data VALUES(7,'01-15-2020')
INSERT INTO #data VALUES(8,'01-17-2020')

DECLARE @fromDate date = '01-01-20'
DECLARE @toDate date = '01-10-20'

SELECT * FROM #data 
WHERE dt >=  (SELECT MAX(dt) FROM #data WHERE dt < @fromDate) and dt <= @toDate
0 голосов
/ 26 января 2020

Попробуйте что-то вроде:

SELECT
    *
FROM MyTable AS My
WHERE
    My.MyDate BETWEEN '2020-01'-01 AND '2020-01-10'
UNION ALL
SELECT TOP 1 *
FROM MyTable AS My
WHERE 
    My.MyDate <'2020-01-01'
ORDER BY
    My.MyDate DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...