SQL выбор данных из нескольких временных таблиц на основе дат - PullRequest
0 голосов
/ 01 мая 2018

Текущий запрос:

SELECT TOP 1 * FROM
 (SELECT B.FILEKEY, B.STATUS AS STATUS, B.EFFDATE FROM TABLEB B
  UNION
  SELECT A.FILEKEY, A.STATUS2 AS STATUS, A.EFFDATE2 AS EFFDATE FROM TABLEA A) C
WHERE C.EFFDATE <= '5/1/2011')
ORDER BY C.EFFDATE DESC

дает правильный результат:

 Status Filekey  Effdate
    0      1       2011-01-01 00:00:00.000

на основе объединенной таблицы C:

Filekey    Status    Effdate
  1           0         2013-01-01 00:00:00.000
  1           1         2012-01-01 00:00:00.000
  1           0         2011-01-01 00:00:00.000
  1           1         2010-01-01 00:00:00.000
  1           0         2009-01-01 00:00:00.000

Теперь мне нужно добавить новый фактор: местоположение на определенную дату.

Объединенная таблица F генерируется следующим образом:

(SELECT E.FILEKEY, E.location, E.EFFDATE FROM TABLEE E
  UNION
  SELECT D.FILEKEY, D.location, D.LOCEFFDATE2 AS EFFDATE FROM TABLED D) F

Что я действительно хотел бы получить, так это следующие результаты: Filekey, Status, Location все на основе определенной даты

каков был статус и местоположение файла на определенную дату?

Спасибо за вашу помощь. Ожидаемый результат будет выглядеть так:

Filekey      Status     Location
  1            0           2

1 Ответ

0 голосов
/ 01 мая 2018

Наконец-то разобрался:

select c.FILEKEY, c.STATUS, d.location from
(select top 1 * from 
  (SELECT B.FILEKEY, B.STATUS, B.EFFDATE FROM tableB B 
   UNION
  SELECT A.FILEKEY, A.STATUS2, A.EFFDATE2 FROM tableA A) C
        where C.EFFDATE <= '5/1/2011'
        order by C.EFFDATE desc) D
inner join
(select top 1 * from 
  (SELECT F.FILEKEY, F.location, F.EFFDATE FROM tableF F
  UNION
  SELECT E.FILEKEY, E.location, E.loceffdate2 AS EFFDATE FROM tableE E) G
       where G.EFFDATE <= '5/1/2011'
       order by G.EFFDATE desc)  H   
on d.filekey=h.filekey
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...