SQL Серверные таблицы с тем же столбцом, но не совпадающими записями - PullRequest
0 голосов
/ 20 марта 2020

У меня есть 2 таблицы с одинаковыми столбцами, но не совпадающими записями.

Таблица 1

ID
----
1
2
3
4
5

Таблица 2

ID
-----
NULL
NULL
NULL
NULL
NULL
6
7
8
9
10

Мне нужно вытащить NOT NULL записей, как указано ниже.

Желаемый результат:

ID   ID
--------
1     6
2     7
3     8
4     9
5     10

1 Ответ

1 голос
/ 20 марта 2020

Один метод - агрегация:

select max(id1) as id1, max(id2) as id2
from ((select t1.id as id1, null as id2 row_number() over (order by id) as seqnum
       from t1
      ) union all
      (select null as id1, t2.id row_number() over (order by id) as seqnum
       from t2
       where t2.id is not null
      ) 
     ) t
group by seqnum;

Примечание: сюда входят все идентификаторы, даже если одна таблица больше другой. Если вам нужны только строки, в которых оба идентификатора заполнены, join - это другой метод:

select t1.id as id1, t2.id as  as id2
from (select t1.id as id1, null as id2 row_number() over (order by id) as seqnum
      from t1
     ) t1 join
     (select null as id1, t2.id row_number() over (order by id) as seqnum
      from t2
      where t2.id is not null
     ) t2
     on t1.seqnum = t2.seqnum;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...