[英]SQL sum function with inner join and a condition
I have following query which produces bellow table: 我有以下查询,产生波纹管表:
SELECT
memcpu.[ID]
, memcpu.[DNS_NAME]
, memcpu.[MEM_SIZE_MB]
, hdd.PATH
, hdd.CAPACITY
FROM [VCenterServer].[dbo].[VPX_VM] AS memcpu
INNER JOIN [VCenterServer].[dbo].[VPX_GUEST_DISK] AS hdd
ON memcpu.ID = hdd.VM_ID
GROUP BY
memcpu.[ID]
, memcpu.[DNS_NAME]
, memcpu.[MEM_SIZE_MB]
, hdd.PATH
, hdd.CAPACITY
;
TABLE: 表:
ID DNS_NAME MEM_SIZE_MB PATH CAPACITY
27 name27 2048 C:\ 42947571712
28 name28 4096 C:\ 42947571712
28 name28 4096 E:\ 134214578176
37 name37 6144 C:\ 42947571712
38 name38 2048 C:\ 42947571712
39 name39 8192 C:\ 145077825536
I'd like to find out how to do SUM on ID with a condition of all the same PATH variables. 我想找出如何在所有相同PATH变量的条件下对ID求和。 Basically sum up storage for each virtual machine so I can see Memory and total storage provisioned.
基本上总结了每个虚拟机的存储,因此我可以看到已配置的内存和总存储。
Desired TABLE (notice the ID 28, it has the C: and E: summed up): 所需的表(注意ID 28,它具有C:和E:的总和):
ID DNS_NAME MEM_SIZE_MB CAPACITY
27 name27 2048 42947571712
28 name28 4096 177162149888
37 name37 6144 42947571712
38 name38 2048 42947571712
39 name39 8192 145077825536
Remove the PATH
and CAPACITY
fields from the GROUP BY
clause and sum CAPACITY
in the SELECT
. 从
GROUP BY
子句中删除PATH
和CAPACITY
字段,并对SELECT
CAPACITY
求和。
Something like this should do: 这样的事情应该做:
SELECT
memcpu.[ID]
, memcpu.[DNS_NAME]
, memcpu.[MEM_SIZE_MB]
, sum(convert(decimal(21, 0), hdd.CAPACITY))
FROM [VCenterServer].[dbo].[VPX_VM] AS memcpu
INNER JOIN [VCenterServer].[dbo].[VPX_GUEST_DISK] AS hdd
ON memcpu.ID = hdd.VM_ID
GROUP BY
memcpu.[ID]
, memcpu.[DNS_NAME]
, memcpu.[MEM_SIZE_MB]
;
SELECT
memcpu.[ID]
, memcpu.[DNS_NAME]
, memcpu.[MEM_SIZE_MB]
, sum(hdd.CAPACITY ) CAPACITY
FROM [VCenterServer].[dbo].[VPX_VM] AS memcpu
INNER JOIN [VCenterServer].[dbo].[VPX_GUEST_DISK] AS hdd
ON memcpu.ID = hdd.VM_ID
GROUP BY
memcpu.[ID]
, memcpu.[DNS_NAME]
, memcpu.[MEM_SIZE_MB] ;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.