SQL 中的排列

Permutation in SQL

我遇到了以下问题,但找不到解决方案(即使在网上搜索了很多次之后)。

我有一个 table 项目和相关员工(大约 100.000 个条目):

+------------+-------------+  
| Project ID | Employee ID |  
+------------+-------------+  
| 1          | 1           |  
| 1          | 2           |  
| 1          | 3           |  
| 2          | 1           |  
| 2          | 2           |  
| 2          | 3           |  
| 3          | 1           |  
| 3          | 2           |  
| ...        | ...         |

是否可以找到每个项目两个员工的所有不同组合并将其写入新的 table?

期望的输出:

Project ID | Employee ID 1 | Employee ID 2  
1          |1              |2  
1          |1              |3  
1          |2              |3  
2          |1              |2  
2          |1              |3   
...

谢谢!

您使用自联接执行此操作:

select pe1.projectid, pe1.employeeid as employeeid1, pe2.employeeid as employeeid2
from pe pe1 join
     pe pe2
     on pe1.projectid = pe2.projectid and pe1.employeeid < pe2.employeeid;

使用 insertcreate table as 将其放入新的 table。

是的,试试这个...

  Select distinct Coalesce(a.ProjectId, b.ProjectId) projectId,
         a.EmployeeId, b.EmployeeId
  From table a  full join table b
      on a.ProjectId = b.ProjectId
         and b.EmployeeId > a.EmployeeId