【发布时间】:2022-01-22 15:27:47
【问题描述】:
你能帮我解决这个下面的查询吗:
我有下面的数据表。
| EmpNo | Name | City |
|---|---|---|
| 1 | John | US |
| 2 | Miranda | US |
| 3 | Pete | US |
| 4 | Jack | US |
| 5 | Kathy | UK |
| 6 | Tanni | UK |
| 7 | Sally | UAE |
我想要如下输出:
| City | Name1 | Name2 |
|---|---|---|
| US | John | Miranda |
| US | John | Pete |
| US | John | Jack |
| US | Miranda | Pete |
| US | Miranda | Jack |
| US | Pete | Jack |
| UK | Kathy | Tanni |
PLSQL 我们可以编写块来获得这个输出。但是单独使用 SQL 代码可以得到输出吗?
【问题讨论】:
-
您在寻找笛卡尔连接吗?
select a.City, a.Name as Name1, b.Name as Name2 from MyTable a, MyTable b -
美国、英国、阿联酋是城市吗?
-
@DmitryBychenko 这不是笛卡尔积。基本上我想按位置找出所有可能的组合名称。此外,它不应该有任何重复的条目以及逆序条目。即:John -- Miranda 组合出现在结果中,然后 Miranda -- John 组合不应该出现。
-
@mathguy 是的。位置名称。
-
“城市”比“位置名称”更具体。如果您想要“位置”,那么这将是比“城市”更好的列名(对于美国、英国、阿联酋等值)。