Apesar de muitas perguntas sobre o mesmo tópico, não consegui encontrar a solução certa. Estou usando um software que agrega IDs a outra tabela como um valor separado por vírgula em vez de uma tabela de junção.
O software expõe três visualizações Department
, Team
e Task
.
PorDepartment
| 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 |
Eu tento alcançar a seguinte estrutura:
| DepID | Dep | TeamID | Team | TaskID | Task |
|--------|-------|--------|--------|--------|-------|
Com uma linha para cada tarefa, potencialmente, aparecendo mais de uma vez, se atribuída a várias equipes, e não se atribuída a nenhuma equipe ou se a equipe ainda não estiver atribuída a um departamento. Mais uma vez, só tenho essas três visões. Qual seria a maneira mais eficiente de criar essa estrutura? Estou no SQL Server 2017.
Eu tentei começar a partir da tabela de tarefas CROSS APPLY STRING_SPLIT
e, em seguida, RIGHT JOIN
para equipes, bem como a partir de LEFT JOIN
equipes de departamento.