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;
使用 insert
或 create 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
我遇到了以下问题,但找不到解决方案(即使在网上搜索了很多次之后)。
我有一个 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;
使用 insert
或 create 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