Oracle SQL: обобщать генеалогические данные в последовательном порядке - PullRequest
0 голосов
/ 24 мая 2018

У меня есть таблица отношений родитель-потомок, как показано ниже

src_data      date       dst_data         key
---------------------------------------------
P1         2018-01-01       D2            123
D2         2018-01-02       D3            123
D3         2018-01-03       D4            123

Я хотел создать запрос / SQL для отображения, как показано ниже

key        link
-----------------
123        P1
123        D2
123        D3
123        D4  

Как я могу это сделать?Спасибо за помощь.

Ответы [ 3 ]

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

Если вы используете иерархический запрос, строки уже упорядочены так, как вы хотите:

SELECT key, src_data, dst_data
  FROM t
 WHERE key = 123
 START WITH src_data = 'P1'
 CONNECT BY src_data =  PRIOR dst_data;

123 P1  D2
123 D2  D3
123 D3  D4

Это отвечает на ваш вопрос?

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

Используйте само полное внешнее соединение и добавьте некоторый тип последовательности заказа или первичный ключ.И, пожалуйста, попробуйте подготовить тестовые данные в следующий раз, чтобы сэкономить время, набрав:

WITH test_data AS
(
SELECT 1 row_seq, 'P1' src_data,  '2018-01-01' src_date,  'D2' dst_data, 123 data_key FROM dual
UNION ALL
SELECT 2, 'D2', '2018-01-02', 'D3', 123  FROM dual
UNION ALL
SELECT 3, 'D3', '2018-01-03', 'D4', 123  FROM dual
)
SELECT NVL(a.src_data, b.dst_data) all_data
FROM test_data a FULL OUTER JOIN test_data b ON a.src_data = b.dst_data
ORDER BY a.row_seq
/

Вывод - вы можете добавить остальные столбцы:

ALL_DATA
---------
P1
D2
D3
D4
0 голосов
/ 24 мая 2018

Хотя ваш вопрос не очень понятен, но ниже приведен запрос на требуемый вывод

SELECT srcData as Link, KEY
FROM tableA
UNION
SELECT dst_data As Link, Key
FROM tableA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...