Как я могу создать SQL серверную хранимую процедуру, которая может создавать таблицу, объединяющую три таблицы - PullRequest
0 голосов
/ 02 августа 2020

У меня есть три таблицы SQL, как показано ниже.

Таблица №1: Тест

WorkLoadType    MaxUsersperVCpu vCPU    RAM MaxUserCapacity
------------------------------------------------------------
Light           6                2        8     12
Medium          4                4       16     16
Heavy           2                4       16     8
Power           1                6       56     6

Таблица №2: VMType

id  HostPoolName    Resource_Group  WorkLoadType
------------------------------------------------
1   Pool1               RG1         Light
2   Pool2               RG2         Light
3   Pool3               RG3         Light
4   Pool4               RG4         Light

Таблица №3 : VM

HostPoolName    MemoryInMB  Name        NumberOfCores   Resource_Group  VMSize
-------------------------------------------------------------------------------
Pool1              8192     VM1             2            RG1           Standard_D2s_v3
Pool1              8192     VM2             2            RG1        Standard_D2s_v3
Pool2              8192     VM3             2            RG2        Standard_D2s_v3
Pool3              8192     VM4             2            RG3        Standard_D2s_v3
Pool3              8192     VM5             2            RG3        Standard_D2s_v3
Pool3              8192     VM6             2            RG3        Standard_D2s_v3
Pool3              8192     VM7             2            RG3        Standard_D2s_v3
Pool3              8192     VM8             2            RG3        Standard_D2s_v3

Мне нужно создать хранимую процедуру, которая должна создать новую таблицу, подобную этой. Здесь Capacity столбец является умножением MaxUserPervCpu и NumberOfCores

Таблица: Вместимость

Name        HostPoolName    ResourceGroup   WorkLoadType    MaxUserPerVCpu  NumberOfCores   Capacity
-----------------------------------------------------------------------------------------------------
VM1         Pool1           RG1              Light                    6     2               12       
VM2         Pool1           RG1              Light                    6     2               12
VM3         Pool2           RG2              Light                    6     2               12
VM4         Pool3           RG3              Light                    6     2               12
VM5         Pool3           RG3              Light                    6     2               12
VM6         Pool3           RG3              Light                    6     2               12

Помощь по этому вопросу будет очень признательна.

Ответы [ 2 ]

2 голосов
/ 02 августа 2020

Это выглядит просто join s:

select vm.*, b.*   -- choose the columns you want here
from vm join
     vmtype vt
     on vt.HostPoolName = vm.HostPoolName join
     Benchmark b
     on b.WorkLoadType = vt.WorkLoadType;
0 голосов
/ 02 августа 2020

Вам необходимо определить общий ключ между всеми этими таблицами и выполнить внутреннее или внешнее соединение. После объединения, если вы хотите включить формулу, вы можете, но вам, возможно, придется сгруппировать остальные столбцы с помощью оператора group by. Как только это будет сделано, вы можете просто вставить в целевую таблицу.

Есть два варианта для вставки ... Вставить в или выбрать вставить в

вот разница между двумя

https://www.c-sharpcorner.com/blogs/select-into-insert-into-in-sql-server1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...