SQL - Как одинаково назначить записи в матричной таблице Skil с помощью хранимой процедуры - PullRequest
0 голосов
/ 30 мая 2018

Я хочу использовать хранимую процедуру для назначения записей каждому человеку.

Это мои таблицы:

tblTransaction :

    ID  Owner     Country   Region    Vendor    Description
    ----------------------------------------------------------------
    1   NULL      Country1  Region1   Vendor2   
    4   NULL      Country1  Region1   NULL  
    7   NULL      Country1  Region1   Vendor2   
    10  NULL      Country1  Region1   NULL  
    13  NULL      Country1  Region2   Vendor3   
    16  NULL      Country1  Region2   Vendor3   Description1
    19  NULL      Country1  Region2   Vendor3   Description1
    2   NULL      Country2  Region1   Vendor1   Description1
    5   NULL      Country2  Region2   Vendor1   
    8   NULL      Country2  Region1   Vendor1   
    11  NULL      Country2  Region1   Vendor2   Description1
    14  NULL      Country2  Region1   NULL  
    17  NULL      Country2  Region1   Vendor2   
    20  NULL      Country3  Region1   NULL  
    3   NULL      Country3  Region2   Vendor3   
    6   NULL      Country3  Region2   Vendor3   Description1
    9   NULL      Country3  Region2   NULL  
    12  NULL      Country3  Region2   NULL  
    15  NULL      Country3  Region1   Vendor1   
    18  NULL      Country3  Region2   Vendor1

tblSkillMatrix

Owner   IsTeamLead  Country     Vendor   Region     Description
-------------------------------------------------------------------
Person1      N      Country1    Vendor1  Region1    
Person2      Y      Country2    Vendor2  Region2    Description1
Person3      N      Country2    Vendor3  Region2    
Person4      Y      Country1    Vendor4  Region1    Description1
Person5      N      Country1    Vendor4  Region1    

Мне нужно обновить tblTransaction в соответствии с условием в tblSkillMatrix и после этого вставить его в таблицу tblAssignment, которая является моей третьей таблицей.

Ниже приведены требования:

  • Назначить ID для TeamLead (если IsTeamLead = 'Y').Описание = 'Description1'
  • Если Country не существует в tblSkillMatrix и если Vendor равно NULL, идентификаторы присваиваются одинаково только TeamLeads независимо от его Country
  • Назначить макс.из 2 транзакций TeamLead за Country
  • Не-TeamLead должен быть одинаково назначен для Country
  • Для Non-TeamLead, если Country не существует в tblSkillMatrixвместо этого используйте Region.Необходимо равномерно распределить.

Результаты должны быть такими:

tblAssignment (вывод)

ID  Owner     Country   Region    Vendor    Description
----------------------------------------------------------------
1   Person1   Country1  Region1   Vendor2   
4   Person1   Country1  Region1   NULL  
7   Person5   Country1  Region1   Vendor2   
10  Person5   Country1  Region1   NULL  
13  Person4   Country1  Region2   Vendor3   
16  Person2   Country1  Region2   Vendor3   Description1
19  Person2   Country1  Region2   Vendor3   Description1
2   Person2   Country2  Region1   Vendor1   Description1
5   Person2   Country2  Region2   Vendor1   
8   Person2   Country2  Region1   Vendor1   
11  Person4   Country2  Region1   Vendor2   Description1
14  Person3   Country2  Region1   NULL  
17  Person3   Country2  Region1   Vendor2   
20  Person4   Country3  Region1   NULL  
3   Person3   Country3  Region2   Vendor3   
6   Person4   Country3  Region2   Vendor3   Description1
9   Person4   Country3  Region2   NULL  
12  Person2   Country3  Region2   NULL  
15  Person1   Country3  Region1   Vendor1   
18  Person3   Country3  Region2   Vendor1
...