Sql 从一列到两列创建一个列表

Sql 从一列到两列创建一个列表,sql,oracle,union,Sql,Oracle,Union,需要有关oracle SQL的帮助 我有一张桌子 from to F B B R R D E X X Q 我需要清单 F B R D E X Q 所以我的问题是从R->D跳到E->X 编辑:这是一个包含from和to的大列表,与另一列citerium分开。通常在to列中都有from,所以我使用 SELECT from,snr as Nr FROM list where StrAbsNr = 1 union all SELECT

需要有关oracle SQL的帮助

我有一张桌子

 from   to
 F      B
 B      R
 R      D
 E      X
 X      Q
我需要清单

F
B
R
D
E
X
Q
所以我的问题是从R->D跳到E->X

编辑:这是一个包含from和to的大列表,与另一列citerium分开。通常在to列中都有from,所以我使用

SELECT from,snr as Nr FROM list where StrAbsNr = 1
union all
SELECT to,snr + 1 as Nr FROM list
创建有序列表。但在某些部分存在间隙,示例中缺少D->E 有人有主意吗

select "from" as val from table
union
select to from table
如果你想维持秩序:

select distinct val 
from (select "from" as val, rownum, 1 as valOrder from table
    union
    select to, rownum, 2 as valOrder from table)
order by rownum,valOrder

对于您的示例,这项工作:

WITH ft AS
  (SELECT 'f' vfrom, 'b' AS vto FROM dual  UNION ALL
  SELECT 'b' , 'r' FROM dual  UNION ALL
  SELECT 'r','d' FROM dual  UNION ALL
  SELECT 'e','x' FROM dual  UNION ALL
  SELECT 'x','q' FROM dual  )
SELECT a.a,  MAX(rn), MIN(ob)
FROM
  ( SELECT vfrom a , rownum rn, 1 ob FROM ft
  UNION ALL
  SELECT vto , rownum rn, 2 ob FROM ft
  ) a
GROUP BY a
ORDER BY MAX(rn), MIN(ob)

A    MAX(RN)    MIN(OB)
- ---------- ----------
f          1          1
b          2          1
r          3          1
d          3          2
e          4          1
x          5          1
q          5          2

 7 rows selected 
或分析功能行号:

SELECT *
FROM
  (SELECT a.a,
    row_number() over (partition BY a order by rn, ob) rna,
    ob,
    rn
  FROM
    ( SELECT vfrom a, rownum rn, 1 ob FROM ft
    UNION ALL
    SELECT vto , rownum rn, 2 ob FROM ft
    ) a
  )
WHERE rna=1
ORDER BY rn,
  ob
A        RNA         OB         RN
- ---------- ---------- ----------
f          1          1          1
b          1          2          1
r          1          2          2
d          1          2          3
e          1          1          4
x          1          2          4
q          1          2          5

 7 rows selected 

不清楚你在问什么。您想按特定顺序输出吗?你似乎这样建议。否则,使用UNION就是一个简单的问题,这也意味着您将获得不同的值。UNION All将返回重复项这可能是他所寻找的,但您如何看待R->D和E->X?“你认为他这么说是不是有什么意思?@mathguy-我认为他用更简单的方式解释的是删除重复的内容;通过编辑。。。您假设当前的rownum有意义。相反,它看起来像一个层次结构,其中输入行可能不一定按该层次结构排列。@mathguy-如果我查看给定的预期输出,似乎他想要的是第一个from,然后是col per rownum的顺序,并且没有DUP