Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Пересечение версионных таблиц  [new]
xostyle
Member

Откуда:
Сообщений: 4
Привет!

Есть 2 таблицы, в каждой из которых есть BEGIN_DATE и END_DATE и общий ключ, по которому их надо соединять.

Цель: сджойнить таблицы с пересеченными версиями

В одной таблице в рамках одного значения ключевого поля диапазоны не перекрываются

это можно сделать с помощью обычного t-sql?


Пример - исходные таблицы
 with A as (
 select 1 as ID, 'Ivanova' as Surname, 1 as BD, 10 as ED from dual union all
 select 1 as ID, 'Petrova' as Surname, 11 as BD, 20 as ED from dual
 )
 
 with B as (
 select 1 as ID, 'SMART' as TARIF, 1 as BD, 5 as ED from dual union all
 select 1 as ID, 'SUPERSMART' as TARIF, 6 as BD, 20 as ED from dual
 )



Результат:
 with C as (
 select 1 as ID, 'Ivanova' as Surname, 'SMART' as TARIF, 1 as BD, 5 as ED from dual union all
 select 1 as ID, 'Ivanova' as Surname, 'SUPERSMART' as TARIF, 6 as BD, 10 as ED from dual union all
 select 1 as ID, 'Petrova' as Surname, 'SUPERSMART' as TARIF, 11 as BD, 20 as ED from dual
 )
13 ноя 15, 19:18    [18414171]     Ответить | Цитировать Сообщить модератору
 Re: Пересечение версионных таблиц  [new]
и сверхлапы
Guest
xostyle
обычного t-sql
если из обычного t вычесть sql, останется необычный здесь ms.
13 ноя 15, 19:32    [18414234]     Ответить | Цитировать Сообщить модератору
 Re: Пересечение версионных таблиц  [new]
stax..
Guest
xostyle,

в чем подвох? t-sql?


  1   with A as (
  2   select 1 as ID, 'Ivanova' as Surname, 1 as BD, 10 as ED from dual union all
  3   select 1 as ID, 'Petrova' as Surname, 11 as BD, 20 as ED from dual
  4   )
  5  ,B as (
  6   select 1 as ID, 'SMART' as TARIF, 1 as BD, 5 as ED from dual union all
  7   select 1 as ID, 'SUPERSMART' as TARIF, 6 as BD, 20 as ED from dual
  8   )
  9  select * from a,b
 10  where
 11       a.id=b.id
 12   and a.bd<=b.ed
 13*  and b.bd<=a.ed
 14  /

        ID SURNAME         BD         ED         ID TARIF              BD         ED
---------- ------- ---------- ---------- ---------- ---------- ---------- ----------
         1 Ivanova          1         10          1 SMART               1          5
         1 Petrova         11         20          1 SUPERSMART          6         20
         1 Ivanova          1         10          1 SUPERSMART          6         20


.....
stax
13 ноя 15, 19:32    [18414235]     Ответить | Цитировать Сообщить модератору
 Re: Пересечение версионных таблиц  [new]
id146
Guest
xostyle,

Что такое t-sql? Вам точно в ветку про оракл?
Почему у вас ID повторяются?
Напишите соединение по ключевому полю и добавьте условия непересечения (или отрицание пересечения) интервалов.
13 ноя 15, 19:41    [18414280]     Ответить | Цитировать Сообщить модератору
 Re: Пересечение версионных таблиц  [new]
AlexFF__|
Member

Откуда:
Сообщений: 2852
MS SQL рулит!
14 ноя 15, 15:20    [18417030]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить