Sql server SQL Server:如何从多个计数器添加多个值
我有不同的计数器,分别命名为可用字节、已提交字节、已修改页面列表字节和不同的值。我想添加这些计数器中的值,所有的值都在CounterValue下Sql server SQL Server:如何从多个计数器添加多个值,sql-server,Sql Server,我有不同的计数器,分别命名为可用字节、已提交字节、已修改页面列表字节和不同的值。我想添加这些计数器中的值,所有的值都在CounterValue下 ----------------------------------------------------------------------------- Machine Name | Counter Name | Counter ID | CounterDateTime | Counter Value ------------------------
-----------------------------------------------------------------------------
Machine Name | Counter Name | Counter ID | CounterDateTime | Counter Value
------------------------------------------------------------------------------
Machine 1 |Available Bytes | 1 | Dec 31st | 123
Machine 1 |Committed Bytes | 2 | Dec 31st | 223
Machine 1 |Modified Bytes | 3 | Dec 31st | 345
Machine 2 |Available Bytes | 4 | Dec 31st | 467
Machine 2 |Committed Bytes | 5 | Dec 31st | 567
Machine 2 |Modified Bytes | 6 | Dec 31st | 678
Machine 3 |Available Bytes | 7 | Dec 31st | 467
Machine 3 |Committed Bytes | 8 | Dec 31st | 567
Machine 3 |Modified Bytes | 9 | Dec 31st | 678
我该怎么做呢?
例如,我想这样做:
1-[(可用字节)/(可用字节+提交字节+修改的页面列表字节)]x 100,用于每个机器名
但我也希望保留包含相同列的相同表。您可以尝试条件聚合。编写一个大小写,仅当名称为所需名称时返回值,否则返回0。然后求和。对表达式中的所有操作数执行此操作
SELECT machine_name,
counterdatetime,
1
-
sum(CASE counter_name
WHEN 'Available Bytes' THEN
counter_value
ELSE
0
END)
/
(sum(CASE counter_name
WHEN 'Available Bytes' THEN
counter_value
ELSE
0
END)
+
sum(CASE counter_name
WHEN 'Comitted Bytes' THEN
counter_value
ELSE
0
END)
+
sum(CASE counter_name
WHEN 'Comitted Bytes' THEN
counter_value
ELSE
0
END)
+
sum(CASE counter_name
WHEN 'Modified Bytes' THEN
counter_value
ELSE
0
END)) counter_value
FROM elbat
GROUP BY machine_name,
counterdatetime;
请不要在您的问题中添加外部链接,除非它确实包含关键信息,而这些信息不能直接包含在您的问题中。情况似乎并非如此。对此表示抱歉。这在这里是一个相当新的概念谢谢你。这就是我要找的。但是,我有很多计算要做。因此,一个计算是1-[(可用字节)/(可用字节+提交字节+修改的页面列表字节)]x 100,结果存储到一个新列中。但是,我想做另一个与第一个计算无关的计算,所以我为此创建了一个sum(case)。我尝试过这样做,但它似乎是一个叠加计算,是否可以进行多个计算,将结果返回到不同的列?例如,您在上面做的案例,我做了:将(案例(计算束)作为列1,然后我想做的是做另一个求和(与第一个计算无关的计算束)如第2列所示。@123testing123:我不太明白你在问什么,但可能感觉到一种趋势……你可以用这种方式进行任何计算,只要SQL Server中有一个标量表达式,并且你使用
sum(CASE…END)
作为变量。@123testing123:当然,你也可以使用其他表达式(或甚至相同)在第二、第三、第n列中使用该格式。只需像,sum(…)sum(…)
一样将sum(…)sum(…)添加到列表的FROM
后面。