我有一个[MemoryValue],[ServerName],[ServerType],[CreateDate]
的桌子。
我想在Grafana中显示ServerName和ServerType的每个组合的MemoryValue。基本上,每个ServerName和ServerType组合都有不同的图。例如
MemoryValue ServerName ServerType
15757746 bob type1
182 bob type2
8 bob type3
15757746 bob2 type1
182 bob2 type2
8 bob2 type3
我希望每个ServerName + ServerType都有6个图形,其中显示MemoryValue。
当我尝试
select MemoryValue , CreateDate as time
from table
group by ServerName, ServerType
它的错误是“在选择列表中无效,因为它既不在聚合函数中也不在GROUP BY子句中。”当我尝试将MemoryValue添加到GROUP BY时,该图无法反映我想要的内容,并且它显示单个图与多个图相反。
我希望每个CreateDate的MemoryValue(由每个ServerName和ServerType分隔)看起来像这样
答案 0 :(得分:0)
您想要类似的东西
select MAX(MemoryValue) as mem , MAX(CreateDate) as time
from table
group by ServerName, ServerType
将MAX更改为所需的任何聚合(AVG,SUM等)
答案 1 :(得分:0)
您正在寻找的是这种东西吗? SQL Server 2017中引入了STRING_AGG。
CREATE TABLE #Tmp (
MemoryValue INT,
ServerName VARCHAR(100),
ServerType VARCHAR(100)
)
GO
INSERT INTO #Tmp (MemoryValue,ServerName,ServerType)
VALUES (15757746,'bob','type1'),(182,'bob','type2'),(8,'bob','type3'),(15757746,'bob2','type1'),(182,'bob2','type2'),(8,'bob2','type3')
GO
SELECT ServerType, string_agg(ServerName,','), MAX(MemoryValue)
FROM #Tmp
GROUP BY ServerType
GO