如何创建一个可以生成一个包含三个表的表的SQLServer存储过程

iqxoj9l9  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(427)

我有三个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

在此方面的帮助将不胜感激。

dy2hfwbg

dy2hfwbg1#

这看起来很简单 join 学生:

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;
kmb7vmvb

kmb7vmvb2#

您需要标识所有这些表之间的公共键,并进行内部或外部联接。在联接之后,如果希望包含公式,则可以,但可能必须使用GROUPBY语句对其余列进行分组。完成后,您可以简单地插入到目标表中。
有两个选项可以插入。。。插入到或选择插入到
这是两者的区别
https://www.c-sharpcorner.com/blogs/select-into-insert-into-in-sql-server1

相关问题