Сборка комбинированного стола из 2-х неровных столов - PullRequest
0 голосов
/ 06 октября 2019

У меня есть 2 неровных таблицы, которые я пытаюсь объединить в 1 таблицу, каждая таблица имеет дату и идентификатор для соединения, проблема в том, что иногда в 1 таблице могут быть строки без совпадающей даты во 2-й таблице

Изначально в таблице 2, казалось, всегда была запись для таблицы 1, поэтому я делал левое соединение, которое работало, но потом я обнаружил проблему, когда в правой таблице была запись для некоторых дат, но в таблице 1 не было совпадающих дат (т.е. 19 и 20) Я присоединился к ДАТА и ID

enter image description here enter image description here enter image description here

Нужно ли создавать какую-то таблицу со всеми датами?

1 Ответ

1 голос
/ 06 октября 2019

Один из вариантов - использовать полное внешнее объединение следующим образом и использовать операторы case для заполнения значений, когда записи отсутствуют в таблице1 или таблице2, как показано ниже.

select case when a.date is not null then 
                 a.date
            else b.date
        end as date
        ,case when a.id is not null then 
                   a.id
              else b.id
          end as id
       ,case when a.name is not null then 
                   a.name
              else b.[full name]
          end as name 
        ,a.[Time Logged In]
        ,b.vol
  from table1 a
full outer join table2 b
     on a.date=b.date
    and a.id=b.id 
...