尽管关于同一主题的许多问题我一直无法找到正确的解决方案。我正在使用一款软件将 ID 作为逗号分隔值而不是联结表聚合到另一个表中。
该软件公开了三个视图Department
,Team
并且Task
.
为了Department
| ID | NAME |
|--------|-------|
| 12345 | IT |
| 25695 | HR |
| 89685 | PAY |
| 47896 | OPS |
Team
| ID | NAME | DEPARTMENT |
|--------|-------|---------------|
| 34252 | TEAM1 | 12345 |
| 54234 | TEAM2 | 12345 |
| 52385 | TEAM1 | NULL |
| 91231 | TEAM1 | 89685 |
Task
| ID | NAME | Team |
|--------|-------|------------------|
| 1 | Ta |34252,54234,52385 |
| 2 | Tb | 52385,91231 |
| 3 | Tc | NULL |
| 4 | Td | 34252 |
我尝试实现以下结构:
| DepID | Dep | TeamID | Team | TaskID | Task |
|--------|-------|--------|--------|--------|-------|
每个任务都有一行,如果分配给多个团队,可能会出现不止一次,如果分配给没有团队或团队尚未分配给部门,则根本不会出现。同样,我只有这三种观点。创建所述结构的最有效方法是什么?我在 SQLServer 2017 上。
我尝试从任务表开始CROSS APPLY STRING_SPLIT
,然后RIGHT JOIN
到团队以及从部门LEFT JOIN
团队开始。