我有一张桌子
ID GROUPID NAME
== ======= ========
1 100 A
2 100 B
3 200 C
4 200 D
5 300 E
6 100 F
我想创建一个包含组内排列对的表,其中第一个和第二个上没有任何对,看起来像这样:
PAIRID FIRST SECOND
====== ===== ======
1 1 2
2 1 6
3 2 1
4 2 6
5 3 4
6 4 3
7 6 1
8 6 2
如果可能,我想在PL / SQL或直接SQL插入中执行此操作。我这样做through Java已经使用递归函数来完成排列。
答案 0 :(得分:2)
你可以自己加入桌子:
SELECT ROW_NUMBER() OVER (ORDER BY a.id, b.id) AS pairid,
a.id AS FIRST, b.id AS second
FROM mytable a
JOIN mytable b ON a.groupid = b.groupid AND a.id <> b.id
ORDER BY 1 ASC;