我有一个父子关系表,如下所示
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
我该怎么办?谢谢你的帮助。
答案 0 :(得分:1)
虽然,您的问题不是很明确,但下面是对所需输出的查询
SELECT srcData as Link, KEY
FROM tableA
UNION
SELECT dst_data As Link, Key
FROM tableA
答案 1 :(得分:0)
如果您使用分层查询,则行已按您的要求排序:
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
这会回答你的问题吗?
答案 2 :(得分:0)
使用自全外连接并添加某种类型的订单序列或主键。请尝试下次准备测试数据以节省我们的时间输入:
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