пересечение таблицы - PullRequest
       7

пересечение таблицы

0 голосов
/ 06 марта 2020

как это сделать? Как вступить так соединить стол?

Таблицы:

| id | p1 | dfrom | dto |
| 1  | 1  |  2010 |2014 |

| id | p2 | dfrom | dto |
| 1  | 2  | 2013  | 2016|

Результат:

| id | p1 | p2 | dfrom | dto |
| 1  | 1  |null| 2010  | 2012|
| 1  | 1  | 2  | 2013  | 2014|
| 1  |null| 2  | 2015  | 2016|

Заранее спасибо!

1 Ответ

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

Попробуйте:

select a.id as id,a.p1 as p1,null as p2,a.dfrom as dfrom,a.dfrom+(a.dto-a.dfrom)/2 as dto 
from test1 a
union
select b.id as id,a.p1 as p1,b.p2 as p2,b.dfrom as dfrom,b.dfrom+(b.dto-b.dfrom)/2 as dto 
from test2 b join test1 a on a.id=b.id
union
select t2.id,null as p1,t2.p2,t1.dto+1 as dfrom,t2.dto from 
(
select b.id as id,a.p1 as p1,b.p2 as p2,b.dfrom as dfrom,b.dfrom+(b.dto-b.dfrom)/2 as dto from test2 b 
join test1 a on a.id=b.id
)t1
join test2 t2 on t1.id=t2.id

Вывод

1  1    NULL 2010 2012
1  1     2   2013 2014
1  NULL  2   2015 2016
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...