SQL Group с помощью слияния - PullRequest
0 голосов
/ 23 мая 2018

У меня есть 2 таблицы, которые я хочу объединить, что-то вроде этого:

C1  C2           V1   V2
1   A            3    5
2   B            4    6

Я хочу добавить все строки из второй таблицы к каждой строке в первой таблице.Я хочу добиться чего-то связать это:

C1  C2  C3  C4  C5  C6
1   A   3   5   4   6
2   B   3   5   4   6   

Можно ли это сделать в OracleDB?Или я должен сделать два запроса и объединить их в своем коде.

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Хммм.,,Это странно.Если у вас есть две строки во второй таблице, вы можете использовать условное агрегирование:

select t1.*, t2.*
from t1 cross join
     (select max(case when seqnum = 1 then v1 end) as v1_1,
             max(case when seqnum = 1 then v2 end) as v2_1,
             max(case when seqnum = 2 then v1 end) as v1_2,
             max(case when seqnum = 2 then v2 end) as v2_2             
      from (select t2.*, row_number() over (order by null) as seqnum
            from t2
           ) t2
     ) t2;

Вы можете вручную расширить это число до нескольких строк.

Если у вас есть неопределенное количество строк, тоВы не можете делать то, что вы хотите, используя простой запрос SQL.Оператор SELECT имеет фиксированный набор строк.Вы можете делать то, что хотите, используя динамический SQL (execute immediate).

Или, возможно, вы просто захотите использовать другое представление для значений table2, например, JSON, XML или вложенную таблицу.

0 голосов
/ 23 мая 2018

Кажется, вы хотите, чтобы окно функционировало так

select min(c1) over () c1, min(c2) over () c2, max(c2) over () c3
from table t;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...