Определите отсутствующие даты для таблицы идентификаторов и дат - PullRequest
0 голосов
/ 19 февраля 2020

Мой подход к идентификации пропущенных дат для идентификаторов состоит в том, чтобы использовать левую таблицу (t1), которая представляет собой календарную таблицу с датами 100 лет, и ЛЕВО присоединиться (на дату = дата) к основной таблице (t2), которая имеет дату и Я БЫ .

Я надеялся, что когда я сделаю левое соединение, у меня будет полный список дат в диапазоне от 1 до 365 для каждого года в (t1), а затем идентификатор соединения из (t2), когда даты совпадут. Когда даты отсутствуют, должен быть NULL.

Текущий вывод и желаемый вывод из моего скрипта прилагается здесь желаемый вывод

Упрощенный скрипт ниже:

SELECT t1.date,
       t2.date,
       t2.id   
FROM t1
LEFT JOIN t2 ON t1.date= t2.date
ORDER BY t1.date,t2.id ASC

Ответы [ 2 ]

0 голосов
/ 19 февраля 2020

Попробуйте:

SELECT t1.date, t2.date, t2.id
FROM t1 LEFT JOIN t2 ON t1.date= t2.date WHERE t2.ID = 28295 ORDER BY t1.date,t2.id ASC
0 голосов
/ 19 февраля 2020

Если вы хотите

SELECT t1.date, t2.date, t2.id
FROM t1 LEFT JOIN
     t2
     ON t1.date = t2.date and t2.id = 28295
ORDER BY t1.date, t2.id ASC;

Если вы хотите это для всех идентификаторов (или большего подмножества), используйте cross join для генерации идентификаторов, а затем left join:

SELECT t1.date, t2.date, i.id
FROM t1 CROSS JOIN
     (SELECT DISTINCT t2.id FROM t2) i LEFT JOIN
     t2
     ON t1.date = t2.date and t2.id = i.id
ORDER BY t1.date, t2.id ASC;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...