Если пробелы в данных находят самую последнюю дату - PullRequest
0 голосов
/ 13 апреля 2020

Я объединяю 2 таблицы с внешним соединением.

SELECT T2.ID
FROM Table1 as T1
LEFT JOIN 
  TABLE2 as T2
  ON t1.date = t.date;

Это может возвращать такие данные, как:

TABLE1.DATE =  03/15  03/16   03/17     03/18    03/19   03/30
TABLE2.DATE=   NULL   03/16   03/17     NULL     NULL    03/20

Поэтому, когда даты в ТАБЛИЦЕ 2 NULL Мне нужно получить самую последнюю дату NON NULL, а затем найти идентификатор из таблицы 2. Для этой даты.

IE на 3/15 дата будет NULL, но на 03/16 мне нужно установить идентификатор на основе данных за 03/16 и заполнить для 03/15 и 03/16.

Для 03/18 и 03/19 самую последнюю дату необходимо установить на 03/17, а затем на основе идентификатора после 03/17 применяется к 03/18 и 03/19.

Какой самый эффективный способ сделать это?

1 Ответ

0 голосов
/ 13 апреля 2020

Вы можете использовать коррелированный подзапрос или outer apply, если вам нужно более одного столбца из другой таблицы:

select t1.date t1_date, t2.date t2_date, t2.id t2_id
from table1 t1
outer apply (
    select top (1) t2.*
    from table2 t2
    where t2.date <= t1.date
    order by t2.date desc
) t2
...