同一表中同一列上的SQL完全外部联接

同一表中同一列上的SQL完全外部联接,sql,oracle,full-outer-join,Sql,Oracle,Full Outer Join,这可能更像是一个设计问题,但我希望这是可能的,没有太多的巫毒 假设我有一张这样的桌子: SELECT * FROM stuff; id grp 1 a 2 a 3 a 1 b 2 b 4 b 我想得到这样的结果(ID被分组在列中): 这可能吗?我尝试了以下查询 SELECT a.id, b.id FROM stuff a FULL OUTER JOIN stuff b ON a.id = b.id WHERE a.

这可能更像是一个设计问题,但我希望这是可能的,没有太多的巫毒

假设我有一张这样的桌子:

SELECT * FROM stuff;

 id   grp
  1     a
  2     a
  3     a
  1     b
  2     b
  4     b
我想得到这样的结果(ID被分组在列中):

这可能吗?我尝试了以下查询

SELECT a.id, b.id FROM stuff a
FULL OUTER JOIN stuff b ON a.id = b.id
WHERE a.grp = 'a' AND b.grp = 'b';
。。。但我只得到公共节点:

a.id    b.id
   1       1
   2       2
我也尝试过在“连接”和“位置”上玩游戏,但似乎没有达到预期的效果

我能在网上找到的最接近的问题是,但我也无法让工会工作

性能不是问题,我可以假设只有两个组


有什么想法吗?

你先做了错事,然后又试图修复它。那是行不通的

您想要加入的是
select*from-stuff-where-grp='a'
select*from-stuff-where-grp='b'
。因此,加入这些:

select a.ID as a, b.ID as b from
  (select * from stuff where grp = 'a') a
full join
  (select * from stuff where grp = 'b') b
on b.id = a.id

您先做了错误的事情,然后又试图修复它。那是行不通的

您想要加入的是
select*from-stuff-where-grp='a'
select*from-stuff-where-grp='b'
。因此,加入这些:

select a.ID as a, b.ID as b from
  (select * from stuff where grp = 'a') a
full join
  (select * from stuff where grp = 'b') b
on b.id = a.id

当你按照另一个问题的答案并尝试使用
联合时发生了什么?我得到的结果与你从下面戈登的建议中得到的结果相似。当你按照另一个问题的答案并尝试使用
联合时发生了什么?我得到的结果与你从戈登的建议中得到的结果相似下面。感谢您的快速回复!您的SQL工作得非常好。真不敢相信我没听懂。谢谢你的快速回复!您的SQL工作得非常好。我真不敢相信我没听懂。